如何编写压缩的字母数字程序
How to write a compressed alphanumeric program
我需要编写一个将字母数字字符串作为输入的程序。
该字符串将仅包含小写字符和从 0 到 9 的数字。
我必须将字母压缩为字母乘以连续重复的次数,例如:
aaa
到 a3
bbbb
到 b4
c
到 c1
如果输入字符串中有任何整数,那么我必须添加整数。
Return 压缩字符串乘以整数。
def std(string):
res =" "
con =1
res += string[0]
for i in range((len(string)-1)):
if (string[i] == string[i+1]):
con+=1
else:
if (con>1):
res += str(con)
res+=string[i+1]
con =1
if (con>1):
res+= str(con)
return res
print(std('aabbb3cccc2d'))
我写了这个程序并得到了输出 a2b
。
预期输出为 a2b3c4d1a2b3c4d1a2b3c4d1a2b3c4d1a2b3c4d1
。谁能告诉我哪里错了?
我认为您在该功能中存在多个问题:
您 return 进入循环并离开函数而不遍历整个字符串
你只检查下一个字母是否相等,不要继续寻找
如果你循环 len(string) - 1
你永远不会检查最后一个字符
你不检查你所在的字符是否是数字,所以你无法跟踪你的字符串最后会相乘多少次
由于无法纠正您的问题,我遇到了这个解决方案,希望对您有所帮助。
def std(string):
multiplier = 0
final_string = ""
jumper = 0
for i in range(len(string)):
if jumper:
jumper -= 1
continue
if string[i].isdigit():
multiplier += int(string[i])
continue
charMultiplier = 0
for j in range(i + 1, len(string)):
if(string[i] == string[j]):
charMultiplier += 1
else:
break
final_string += string[i]
final_string += str(charMultiplier + 1)
jumper += charMultiplier
final_string = final_string * multiplier
return final_string
我需要编写一个将字母数字字符串作为输入的程序。 该字符串将仅包含小写字符和从 0 到 9 的数字。
我必须将字母压缩为字母乘以连续重复的次数,例如:
aaa
到a3
bbbb
到b4
c
到c1
如果输入字符串中有任何整数,那么我必须添加整数。
Return 压缩字符串乘以整数。
def std(string):
res =" "
con =1
res += string[0]
for i in range((len(string)-1)):
if (string[i] == string[i+1]):
con+=1
else:
if (con>1):
res += str(con)
res+=string[i+1]
con =1
if (con>1):
res+= str(con)
return res
print(std('aabbb3cccc2d'))
我写了这个程序并得到了输出 a2b
。
预期输出为 a2b3c4d1a2b3c4d1a2b3c4d1a2b3c4d1a2b3c4d1
。谁能告诉我哪里错了?
我认为您在该功能中存在多个问题:
您 return 进入循环并离开函数而不遍历整个字符串
你只检查下一个字母是否相等,不要继续寻找
如果你循环
len(string) - 1
你永远不会检查最后一个字符你不检查你所在的字符是否是数字,所以你无法跟踪你的字符串最后会相乘多少次
由于无法纠正您的问题,我遇到了这个解决方案,希望对您有所帮助。
def std(string):
multiplier = 0
final_string = ""
jumper = 0
for i in range(len(string)):
if jumper:
jumper -= 1
continue
if string[i].isdigit():
multiplier += int(string[i])
continue
charMultiplier = 0
for j in range(i + 1, len(string)):
if(string[i] == string[j]):
charMultiplier += 1
else:
break
final_string += string[i]
final_string += str(charMultiplier + 1)
jumper += charMultiplier
final_string = final_string * multiplier
return final_string