我正在使用while和for循环执行字符串压缩功能。这个想法是:
1.使用第一个字符遍历字符串,然后在下一个字符不相同时停止
2.通过删除前一个相同字符来滑动旧字符串
3.重做循环,直到字符串len = 0。
不知何故,我的初始代码无法正常工作->我使用了一个助手(在初始字符串的末尾添加2个“ $$”字符,然后循环直到最后2个$$。
任何人都可以不使用帮助程序来帮助我解决此问题! 非常感谢。
这是我的代码:
text = 'aaxxxxxxxbccccaaxxxaa'
text =text+"$$" # this is the helper, I would like the do the task without
using helper
count=0
result=''
while len(text)>2:
for x in range(0,len(text)):
if text[x]==text[0]:
#print( text[x])
count+=1
else:
print(text[0]+str(count))
result = result+text[0]+str(count)
print(result)
text =text[count:]
count=0
break
P.s如果不使用帮助程序,则会超出字符串范围。
答案 0 :(得分:0)
下面的代码将打印: a2x7b1c4a2x3a2
text = 'aaxxxxxxxbccccaaxxxaa'
text =text+"$$" # this is the helper, I would like the do the task withou using
helper
count=0
result=''
while len(text)>2:
for x in range(0,len(text)):
if text[x]==text[0]:
#print( text[x])
count+=1
else:
#print(text[0]+str(count))
result = result+text[0]+str(count)
#print(result)
text =text[count:]
count=0
break
print(result)
我想删除帮助程序,并使用下面的第二个代码获得相同的 a2x7b1c4a2x3a2 ,但是Jupiter笔记本会死(我猜会发生无限循环)
text = 'aaxxxxxxxbccccaaxxxaa'
count=0
result=''
while len(text)>0:
for x in range(0,len(text)):
if text[x]==text[0]:
#print( text[x])
count+=1
else:
#print(text[0]+str(count))
result = result+text[0]+str(count)
#print(result)
text =text[count:]
count=0
break
print(result)