编程笔试2020221

末鹿安然 提交于 2020-02-22 05:49:59

 

题目:

一个字符串, 当其中出现超过2个的连续字符时候,将其改写成该字符的数字+该字符。例如'aaaabbcd',改写成‘4abbcd’。

请写一个unzip函数,判断输入的字符串是否符合该改写规则,如果符合,打印原始字符串。

 

注意:使用left变量传递参数。判断每个字符的前一位是否为数字。

s='10abb4c51d'

def unzip(s):
    left=0
    output=[]
    for i in range(len(s)):
        c=ord(s[i])
        if c>=97 and left==0:#是字母,且左边不是数字
            output.append(s[i])
        if c>=97 and left>2:
            output.append(s[i]*left)
        #print(s[i]*left,end='')#是字母,左边数字>2
            left=0
        if c>=97 and (left ==1 or left==2): #是字母,左边数字是1或2
            return False
        if c<97: #是数字
            left=left*10+int(s[i]) # 是数字
        if i==len(s)-1 and c<97:
            return False
    return output

result=unzip(s)
if not result:
    print('!error')
else:
    for ele in result:
        print(ele,end='')

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!