替换字符串中的空格
2018-01-03 09:38
295 查看
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:字符串中空格替换有两种方式,一种是遍历一遍,将源字符串直接复制到新字符串,遇到空格替换之即可,这种方法会增加空间复杂度。另一种方法是,先统计源字符串中空格数,获得替换后字符串的长度,再从后向前进行替换。
注意:
1. 在上述解题中,通过指针移动操作统计字符串的长度以及空格数。由于后面还要继续使用该字符串指针,因而要么创建一个临时指针,要么在统计完之后将指针复位。
2. 进行字符串的复制时,字符串结束符’\0’也需要复制,防止出现问题。
947b
解题思路:字符串中空格替换有两种方式,一种是遍历一遍,将源字符串直接复制到新字符串,遇到空格替换之即可,这种方法会增加空间复杂度。另一种方法是,先统计源字符串中空格数,获得替换后字符串的长度,再从后向前进行替换。
class Solution { public: void replaceSpace(char *str,int length) { if(str == ""){ return; } //统计字符串str中空格数,以及字符串的总长度,由于是通过指针移动统计,因而统计结束之后需要将指针复位 int originLength = 0, blankCount = 0; while(*str != '\0'){ originLength ++; if(*str == ' '){ blankCount ++; } str ++; } // 指针复位 str -= originLength; int totalLength = originLength + 2 * blankCount; if(totalLength > length) return; // 从最后一个字符开始替换,当两个字符串指针相遇时,替换结束 while(originLength != totalLength){ char a = str[originLength]; if ( a == ' '){ str[totalLength--] = '0'; str[totalLength--] = '2'; str[totalLength--] = '%'; originLength--; } else{ str[totalLength] = str[originLength]; originLength--; totalLength--; } } } };
注意:
1. 在上述解题中,通过指针移动操作统计字符串的长度以及空格数。由于后面还要继续使用该字符串指针,因而要么创建一个临时指针,要么在统计完之后将指针复位。
2. 进行字符串的复制时,字符串结束符’\0’也需要复制,防止出现问题。
947b
相关文章推荐
- 截取实际长度字符串,并用空格替换
- 025 替换字符串中的空格(keep it up)
- 字符串替换空格
- 把字符串中的空格替换成“00”
- IMWeb提升营Day1 | 训练题2:字符串空格替换
- 剑指offer算法 java实现 替换字符串空格
- 把字符串中的每个空格替换程“%20”,例如输入“I love my hometown”,输出为”I%20love%20my%20hometown”
- 剑指offer 04_替换字符串中的空格
- 剑指offer-04:字符串替换空格
- 面试之路(20)-字符串中空格替换一类问题详解
- 将字符串中的空格用逗号替换
- 把字符串中的每个空格替换成“ ”,要求在原字符串上直接替换。(假设原字符串有足够空间)
- 【C语言】:字符串替换空格,输入“we are happy!”,输出”we%20are%20happy!“
- java 不复制字符串前提下替换字符串中的空格算法实现O(n)
- 字符串空格替换
- 【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”
- 替换字符串中的空格
- CCI 1.4 将字符串空格替换成“%20”
- 程序员面试金典(3)字符串中空格替换为"%20"