作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
题目描述:
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
数据范围:0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
示例:
输入:
"We Are Happy"
返回值:
"We%20Are%20Happy"
解题思路:
本题考察算法思维。两种解题思路:
1)拼接法
进行一次遍历,如果是字符就将其添加至新字符串后面,如果是空格,就把%20添加到新字符串后面,最后就拼接完成了。
2)替换法
进行一次正序或倒序遍历;用find_first_of或find_last_of函数寻找空格,找到后就将空格位置替换为%20;然后继续寻找,如果找完没有空格,就返回字符串;理论上最多执行size次操作,但实际次数等于空格数量。
测试代码:
1)拼接法
class Solution {
public:
// 替换空格
string replaceSpace(string s) {
int size = int(s.size());
string result;
for(int i = 0; i < size; ++i){
if(s[i] == ' '){
result += "%20";
}
else{
result += s[i];
}
}
return result;
}
};
2)替换法
class Solution {
public:
// 替换空格
string replaceSpace(string s) {
int size = int(s.size());
for(int i = 0; i < size; ++i){
int idx = s.find_last_of(' ');
if(idx == -1){
return s;
}
s.replace(idx, 1, "%20");
}
return s;
}
};