题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
知识点
字符串
Qiang的思路V1
一看这个问题,“替换”,瞬间想到replace,简单粗暴有没有。
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
return s.replace(' ','%20')
效果是杠杠滴,简单粗暴,但是不提倡啊。这样写代码就没什么意思了。
Qiang的思路V2
因为和C/C++不一样,不能向操作数组一样对python中的字符串进行操作,但是为了仿照C/C++的方式,尽量从原理出发实现该功能,所以使用了字符串拼接的功能,这就类似C/C++中的往字符型数组最后面添加元素,当然前提是开辟的空间足够。
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
ss=''
for c in s:
if c==' ':
ss=ss+'%20'
else:
ss=ss+c
return ss
Book中思路
书上的思路挺棒的,奈何能力有限,没办法用python写出同样的代码。所以特地用C/C++实现了一下。
首先通过一次遍历找到所有的空格,记录总共出现的次数,这样就能得到转换之后的数组长度了。
然后根据此长度找到转换之后字符串最后的位置。
最后倒着开始复制,当出现空格的时候进行替换即可。
class Solution {
public:
void replaceSpace(char *str,int length) {
int len=0;
for(;str[len]!='\0';len++);
int _len=len;
for(int i=0;i<len;i++)
if(str[i]==' ')
_len+=2;
if(_len>length)
return;
str[_len]='\0';
for(int i=len-1,j=_len-1;i>=0;i--)
if(str[i]==' '){
str[j--]='0';
str[j--]='2';
str[j--]='%';
}else
str[j--]=str[i];
}
};
另外,在我写的python代码中并不是在原来的串上进行修改的,但是书中是在原来的串上进行修改的。
作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com。
个人网站:https://www.myqiang.top。