替换空格
2020-05-01 本文已影响0人
su945
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
问题分析
- step1:先进行边界检测(判断替换后的长度与给定的长度)
- step2:统计空格数和字符长度
- step3:计算替换后的长度
- step4:从后往前进行替换
解题思路1
class Solution {
public:
void replaceSpace(char *str, int length) {
//注意length是数组长度,并不是字符串长度
//思路首先明确空格数
if (str == NULL)
{
return;
}
int emptyNum = 0;
int strlength = 0;
while (str[strlength] != '\0')
{
if (str[strlength] == ' ')
{
emptyNum++;
}
strlength++;
}
//声明一个新字符数组
int newLenght = strlength + 2 * emptyNum;
if (newLenght >length)
{
return;
}
while (newLenght > strlength && strlength >= 0)
{
if (str[strlength] != ' ')
{
str[newLenght] = str[strlength];
strlength--;
newLenght--;
}
else
{
str[newLenght] = '0';
str[newLenght-1] = '2';
str[newLenght-2] = '%';
strlength--;
newLenght -= 3 ;
}
}
}
};
参考
https://github.com/WordZzzz/Note/commit/6122b68a48e8b53e4ae59d400da4360af779058d