使用while和for循环进行字符串压缩

时间:2019-02-22 01:30:59

标签: python-3.x

我正在使用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如果不使用帮助程序,则会超出字符串范围。

1 个答案:

答案 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)