题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
例子:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
这说实在用python做是最简单,不过为了追求多样性解法,我还是探索了一下c++的数组迁移的思路
python 解法:
class Solution(object):
def replaceSpace(self, s):
"""
:type s: str
:rtype: str
"""
s=s.split(' ')
new_s=''
for i in range(1,len(s)):
new_s+=s[i-1]+'%20'
return new_s+s[-1]
或者
class Solution:
def replaceSpace(self, s: str) -> str:
res = []
for c in s:
if c == ' ': res.append("%20")
else: res.append(c)
return "".join(res)
C++的解法是:
统计有多少个空格,然后拓展一个新的数组来进行原位置嵌入,新数组的长度公式是new_len=len+2*count(空格)
class Solution{
public:
string replaceSpace(string s){
int count=0,len=s.size();
for(char c:s){
if (c==' ') count++;
}
s.resize(len+2*count);
for(int i=len-1,j=s.size()-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;
}
};