目录
非常经典的一道题目!!!!!
题目描述
这是一道接口型的题目,你只需要完成这个接口就可以
str指向的就是要处理的字符串
length是要处理的字符串的长度
题目分析
首先要把一个空格字符变成 3 个字符 就是说遇到一个空格整个字符串就要向后移动2位,所以先要计算字符串中有多少个空格,然后向后移 * 2个字符,最后使用双指针 一个指向非空字符 另一个指向空字符
end1 向前走, 把字符往后挪,end2也往前走,直到end1遇到空格
end2 ++ 指向的内容要依次改为 0 2 % ,在此期间end1不变
然后end1--,把字符往后挪,end2也往前走,直到end1再次遇到空格
什么时候停止呢?
在最后两个指针相等的时候,就表示结束了
代码实现
void replaceSpace(char* str, int length) { //数空格 int count = 0; char* p = str; while (*p) { if (*p == ' ') { count++; } p++; } int len = length + 2 * count;//新字符串的长度 int end1 = length - 1; int end2 = len - 1; while (end1 != end2)//结束标记 { if (str[end1] != ' ') { str[end2--] = str[end1--]; } else { str[end2--] = '0'; str[end2--] = '2'; str[end2--] = '%'; end1--; } } }