剑指 Offer 05. 替换空格
来源:力扣(LeetCode)
链接:题目链接
难度简单217收藏分享切换为英文接收动态反馈
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
输出:“We%20are%20happy.”
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
题目思路:
利用C++中字符串是可以修改的,所以首先我们需要统计一下字符串s中空格的个数count,接着,我们将字符串的长度修改为原字符串长度Len加上2*count(因为%20比空格多两个字符),接着我们倒着遍历字符串,如果遇到空格,就修改。
class Solution {
public:
string replaceSpace(string s) {
int count = 0;
for(int i = 0; i < s.size(); i++){
if(s[i] == ' ')
count++;
}
if(count == 0){
return s;
}
int len = s.size();
s.resize(len+2*count);
for(int i = len-1, j = len + 2 * count - 1; i < j; i--, j--){
if(s[i]!=' '){
s[j] = s[i];
}
else
{
s[j-2] = '%';
s[j-1] = '2';
s[j] = '0';
j -= 2;
}
}
return s;
}
};