str.replace gives s[i-1] out of range error
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 | import sys def super_reduced_string(s): i=len(s)-1 while(i>0): if(s[i]==s[i-1]): s=s.replace(s[i],'') s=s.replace(s[i-1],'') i=len(s)-1 else: i-=1 return (s) |
例如,如果取一个字符串
然后我想去掉
为什么会提出一个
您正在删除多个字符。
1 2 3 4 5 6 | >>> s = 'aaabccddd' >>> i = len(s) - 1 >>> i 8 >>> s.replace(s[i], '') 'aaabcc' |
现在
如果只想从字符串中删除一个字符,则不要使用
1 | s = s[:i - 1] + s[i + 1:] # remove the doubled character found |
切片总是成功的,它不会抛出
工作代码(插入了一些PEP-8空白):
1 2 3 4 5 6 7 8 9 | def super_reduced_string(s): i = len(s) - 1 while i: if s[i] == s[i-1]: s = s[:i - 1] + s[i + 1:] i = len(s) - 1 else: i -= 1 return s |
这产生:
1 2 | >>> super_reduced_string('aaabccddd') 'abd' |