my_string = "aaabbcccaa"
required_output = "a3b2c3a2"
请不要提供代码,我想自己尝试一下,请建议我使用哪种方法获得所需的输出。
根据@ggradnig的建议,我尝试了以下代码。
def count_string(s):
current_char= s[0]
counter =0
result_string = ''
for i in range(len(s)):
if s[i] == current_char:
counter+=1
if s[i] != current_char:
result_string=result_string+current_char+str(counter)
current_char = s[i]
counter = 1
continue
result_string=result_string+current_char+str(counter)
return result_string
given_string=count_string("aabbbccccaa")
print(given_string)
请建议更改以改进上述代码
答案 0 :(得分:0)
为您正在计数的当前字符和计数器变量声明一个变量。设置"当前字符"到字符串的第一个字符,计数器为0.另外,声明一个空的结果字符串。
现在迭代输入String的每个字符,并检查它是否等于你的"当前字符"。如果不是,请将此字符附加到结果字符串,后跟计数器的当前值。另外,在追加"当前字符"之后将计数器设置为1。到你正在迭代的角色(即下一个角色)。如果您当前迭代的角色等于您当前的角色",请增加您的计数器。
答案 1 :(得分:0)
在python中使用散列...和词典。使字符键及其出现值为..然后遍历字典...并取一个空字符串并将两个键及其值附加到字符串。
修改强>
现在我想改变我的方法而不是在Dictionary下使用集合并使事情变得复杂,我们可以使用简单的方法。这个计划正在运作。
string2=""
string=input()
i=0
while(i<len(string)):
count=1
for j in range(i+1,len(string)):
if string[i]==string[j]:
count+=1
else:
break
string2=string2+string[i]
string2=string2+str(count)
i=i+count
print(string2)
答案 2 :(得分:0)
my_string =&#34; aaabbcccaa&#34; required_output = a3b2c3a2
您正在计算连续字符,如果后续字符相同,则递增计数变量,如果后续字符不同,则继续并重新初始化计数变量。将计数附加到遇到的字符。将整数附加到字符串时,您必须进行类型转换。时间复杂度为O(n)
答案 3 :(得分:0)
模块 itertools 中的函数groupby()
使这一点变得微不足道。阅读它的文档,其中显示了示例(在注释中):
>>> [list(g) for k, g in groupby('AAAABBBCCD')]
[['A', 'A', 'A', 'A'], ['B', 'B', 'B'], ['C', 'C'], ['D']]
从这里,您只需将每个子列表的第一个元素与该子列表的长度相结合,即可获得答案。一些字符串转换和连接列表必须使用空字符串,但基本上是单行。
我不明白为什么大家会推荐str.count()
方法。它将两个'a'运行组合成一个不需要的计数,一旦你将字符串分解成相同的字母子串,len()
就可以完成这项工作。
请建议更改以改进上述代码
from itertools import groupby
string = 'aaabbcccaa'
def count_string(s):
return ''.join(x[0] + str(len(x)) for x in (list(g) for _, g in groupby(s)))
print(string, '->', count_string(string))
或者如果您希望继续使用当前的算法,我建议至少进行以下代码清理:
def count_string(s):
counter = 0
result_string = ''
current_char = s[0]
for c in s:
if c == current_char:
counter += 1
else:
result_string += current_char + str(counter)
current_char = c
counter = 1
return result_string + current_char + str(counter)
答案 4 :(得分:-1)
你应该使用for循环和字符串“count”方法
如果你想让我发布代码也告诉我
答案 5 :(得分:-1)
Python有两种方法可能很有用。 我认为python有你可以使用的count方法,或者你可以将字符串传递给字符串长度的长度方法。