【发布时间】:2018-03-26 08:12:33
【问题描述】:
我正在编写一个简单的程序,用*(asterisk) 替换字符串中的重复字符。但这里的事情是我可以打印字符串中重复字符的第一次出现,但不能打印其他出现。
例如,
如果我的输入是Google,我的输出应该是Go**le。
我可以用星号替换重复的字符,但找不到打印第一次出现的字符的方法。也就是说,我现在的输出是****le。
看看我的 Python3 代码:
s = 'Google'
s = s.lower()
for i in s:
if s.count(i)>1:
s = s.replace(i,'*')
print(s)
有人可以建议我应该怎么做才能获得所需的输出吗?
【问题讨论】:
-
好吧,目前你正在用大于 1 的计数替换所有内容。你需要做的是保持每个字母的运行计数,一旦它大于 1,用星号替换它。一本字典可以很好地解决这个问题。并不是说字符串是不可变的,因此每次删除/更改元素时,您都会创建一个新列表。 IOW 从头开始构建这个新字符串实际上会更快。
-
@PM2Ring No....我的程序认为字符不区分大小写,这就是为什么在我的代码的第二行中,我将字符串中的所有字符都转换为小写
-
@PM2Ring LOL,这不是作业!
标签: python string python-3.x printing