对于字符串中,利用指定字符替换字符串中的所有空格,使用合适的方法来避免多次移动字符的操作,考虑使用python的内置方法来简便的解决该问题,可以更加了解到python的便捷。
对于给定一个内部含有空格字符的字符串input_str,使用replace字符来替换字符串中的所有空格。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
对于该问题,如果假设给定的replace变量长度是n,最直接的想法就是从前往后遍历字符串,然后如果遇到了空格字符,就将空格之后的字符向后移动n-1位,将空格字符替换成为replace,这种做法的问题在于每次发现一个空格就需要将剩余字符向后移动,需要多次移动字符,这就产生的时间复杂度较高的问题,不是一种较为理想的做法,由于从前向后的比阿里,才需要向后移动字符,所以考虑从后往前更新字符串。
如果说已知了空格的数量,就可以计算出替换后字符串的长度,定义一个与之长度相等的结果列表,然后从后往前向结果列表中进行字符填充,这种做法只需要遍历字符串中的每个字符一次,但是需要重新再开辟一块内存空间,用来保存结果列表。该部分的python实现如下:
class solution():
def func(self,input_str,replace):
replace_len=len(replace)
count=0
for i in input_str:
if i==' ':
count+=1
new_len=len(input_str)+(replace_len-1)*count
new_string=[None for i in range(new_len)]
point_new=new_len-1
point_origin=len(input_str)-1
while point_origin>=0 and point_origin<=point_new:
if input_str[point_origin]==' ':
new_string[point_new-replace_len+1:point_new+1]=replace
point_new-=replace_len
else:
new_string[point_new]=input_str[point_origin]
point_new-=1
point_origin-=1
return ''.join(new_string)
但是对于python的内置函数来解决该问题,就非常方便,直接将给定字符串按照空格进行分隔形成列表,然后使用replace字符串来对列表中的字符进行拼接,返回即可。代码如下:
list=imnput_str.split(' ')
return replace.join(list)