请实现一个函数,把字符串
s
中的每个空格替换成"%20"。
// c++
#include <string>
using namespace std;
class Solution
{
public:
string replaceSpace(string s)
{
int numOfBlank = 0;
for (auto c : s)
{
if (c == ' ')
{
numOfBlank++;
}
}
int len = s.size();
s.resize(len + numOfBlank * 2);
int i = len - 1;
int j = s.size() - 1;
while(i != j){
if(s[i] != ' '){
s[j--] = s[i--];
}else{
i--;
s[j--] = '0';
s[j--] = '2';
s[j--] = '%';
}
}
return s;
}
};
注意点:
- c++中string为可变类型,可以直接在原来的基础上扩展修改字符串。java和python只能新建一个字符串进行拷贝。
- for(auto c : s)可以遍历s中的元素,c的类型如果无法确定可以用auto代替。
- s[i++] = 1,这种写法适合向数组中添加元素,添完后i自动后移。
// java
class Solution {
public String replaceSpace(String s) {
StringBuilder res = new StringBuilder();
for (char c : s.toCharArray()) {
if (c != ' ') {
res.append(c);
} else {
res.append("%20");
}
}
return res.toString();
}
}
注意点:
- 要对java中的字符串进行修改,推荐使用StringBuilder,它的append("hello"), insert(8, "hello"), delete(5, 8)方法很好用。
- StringBuilder对象用toString方法转换为String。
- String对象要用toCharArray方法转换为字符型数组才能进行遍历。
# python
class Solution:
def replaceSpace(self, s: str) -> str:
# return s.replace(' ', '%20')
# res = ''
# for c in s:
# if c != ' ':
# res += c
# else:
# res += '%20'
# return res
res = []
for c in s:
if c != ' ': res.append(c)
else: res.append('%20')
return ''.join(res)
注意点:
- 可以用字符串内置处理函数replace。
- 也可以新建一个字符串或者列表(最后将列表转换成字符串)。