题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
思路很简单,遇到空格就替换,但是c++版本需要注意:函数没有返回值,void,这就代表你需要在原来的str上进行更改,首先遍历一边看看需要多长的长度,然后在进行替换。
做题可能出现的问题
1、两种版本都需要可能的边界条件,可能被的是空字符串,需要你考虑。
2、c++版本中第一个for循环可以用s t r[i]!=‘\0’来表示
3、第二个for的时候,需要注意i>=0,i的初始值为len(理论上应该length-1也可以但是,不知道为什么不行,又了解c++语法的告诉我一下)
4、替换是先替换0然后是2然后是%
python
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
result = ""
if s == None or len(S)<=0:
return result
for i in s:
if i == " ":
result +="%20"
else:
result += i
return result
C++
class Solution {
public:
void replaceSpace(char *str,int length) {
if (str == NULL || length <= 0)
return ;
int blanknum = 0;
int len = 0;
for(int i = 0;str[i]!='\0';i++){
len ++;
if (str[i]==' ')
blanknum ++;
}
int total = len + blanknum*2;
if (total == length)
return ;
for (int i= len; i>=0;i--)
{
if (str[i] != ' ')
str[total--] = str[i];
else
{
str[total--] = '0';
str[total--] = '2';
str[total--]='%';
}
}
}
};