免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3360 | 回复: 3
打印 上一主题 下一主题

不用string.replace ,在一个字符串里面用新字串替换掉旧的字串 [复制链接]

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-19 13:25 |只看该作者 |倒序浏览
这是我写的

  1. def myreplace(s,old,new):
  2.   length=len(old)
  3.   k=[]
  4.   final=""
  5.   for i in range(0,len(s)-length+1):
  6.      k.append(s[i:i+length])

  7.   for i in xrange(len(k)):
  8.     if k[i]==old:
  9.       k[i]=new
  10.    
  11.   for i in range(0,len(k),length):
  12.     final=final+str(k[i])
  13.   return final

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

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [报告]
发表于 2014-03-19 15:14 |只看该作者
这是面试题?

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
3 [报告]
发表于 2014-03-19 15:23 |只看该作者
看一本书叫practical programming python ,里面练习里面的一道题

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
4 [报告]
发表于 2014-03-19 15:27 |只看该作者
本帖最后由 timespace 于 2014-03-19 15:29 编辑

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

如果允许使用其它str方法的话,还有更简单的实现:
  1. >>> def str_repl(src, old, new):
  2. ...     return new.join(src.split(old))
  3. ...
  4. >>> str_repl('hello, world', 'world', 'abc')
  5. 'hello, abc'
  6. >>> str_repl('hello, world', 'hello', 'hi')
  7. 'hi, world'
  8. >>> str_repl('hello, world', ', ', '---')
  9. 'hello---world'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP