hmchzb19 发表于 2014-03-19 13:25

不用string.replace ,在一个字符串里面用新字串替换掉旧的字串

这是我写的
def myreplace(s,old,new):
length=len(old)
k=[]
final=""
for i in range(0,len(s)-length+1):
   k.append(s)

for i in xrange(len(k)):
    if k==old:
      k=new
   
for i in range(0,len(k),length):
    final=final+str(k)
return final

我发现我这段code 有两个问题,
1. s的长度必须刚好是old 长度的倍数。
2. return final 的值是传进来的s,没有做任何改变。

timespace 发表于 2014-03-19 15:14

这是面试题?

hmchzb19 发表于 2014-03-19 15:23

看一本书叫practical programming python ,里面练习里面的一道题

timespace 发表于 2014-03-19 15:27

本帖最后由 timespace 于 2014-03-19 15:29 编辑

LZ还有一个问题,"str1 = str1 + str2"非常非常慢。。。前几天我刚做了了一个benchmarkPython字符串拼接效率测试 。还有就是传入的s不能改变,Python语言的规则。

如果允许使用其它str方法的话,还有更简单的实现:>>> def str_repl(src, old, new):
...   return new.join(src.split(old))
...
>>> str_repl('hello, world', 'world', 'abc')
'hello, abc'
>>> str_repl('hello, world', 'hello', 'hi')
'hi, world'
>>> str_repl('hello, world', ', ', '---')
'hello---world'
页: [1]
查看完整版本: 不用string.replace ,在一个字符串里面用新字串替换掉旧的字串