
分析
原地修改
- 先记录原来的字符串长度
- 遍历字符串找到其中的空格
- 根据字符串中的空格数量*2来扩展字符串长度
- 两个指针,一个指向新字符串末尾,一个指向旧字符串末尾
- 如果不是空格
- 如果时空格
- 将新指针赋值为0
- 新指针减一赋值为2
- 新指针减二赋值为%
代码
class Solution {
public:
string replaceSpace(string s) {
int oldlen = s.length();//先记录原来的字符串长度
if (oldlen <= 0)
{
return "";
}
int spaceCount = 0;
//遍历字符串找到其中的空格
for (auto ch : s)
{
if (ch == ' ')
{
spaceCount++;
}
}
//根据字符串中的空格数量*2来扩展字符串长度
s.resize(oldlen + spaceCount * 2);
//两个指针,一个指向新字符串末尾,一个指向旧字符串末尾
//旧指针比零小说明字符串遍历完了,新指针大于旧指针时也说明遍历完了
for (int i = oldlen - 1, j = s.length() - 1;
i < j && j >= 0; i--,j--)
{
if (s[i] == ' ')
{
s[j--] = '0';
s[j--] = '2';
s[j] = '%';
}
else
{
s[j] = s[i];
}
}
return s;
}
};