Skip to the content.

替换空格


Contact me:

Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub


来自牛客 剑指offer

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

思路:先统计一下有多少空格,计算新字符串有多长,从后往前,遇到空格替换,否则,直接复制

void replaceSpace(char *str,int length) {
    // 检查
    if (length <= 0 || str == nullptr) {
        return;
    }
    //统计空格
    int count = 0;
    for (int i = 0; i < length; ++i) {
        if (*(str + i) == ' ') {
            ++count;
        }
    }
    //计算新字符串结尾
    char *old_end = str + length;
    char *new_end = str + length + count * 2;

    while (new_end >= str) {
        // 复制
        if (*old_end != ' ') {
            *new_end = *old_end;
        }
        // 替换
        else {
            *new_end = '0';
            --new_end;
            *new_end = '2';
            --new_end;
            *new_end = '%';
        }
        --new_end;
        --old_end;
    }
}