我有这个字符串aabcd,我需要计算出现的次数并返回。
aabcd
这是我的第一种方法:
def string_to_occurances(s): dictionary = {} for i in range(int(len(s))): if s[i] in dictionary: dictionary[s[i]] += 1 else: dictionary[s[i]] = 1 return ''.join(f'{k}{v}' for k, v in dictionary.items())
所以,在这种情况aabcd下变成了a2b1c1d1,现在我想知道如何将它转换回来。
a2b1c1d1
这是我到目前为止所拥有的:
def is_digit(s): if s == '0' or s == '1' or s == '2' or s == '3' or s == '4' or s == '5' or s == '6' or s == '7' or s == '8' or s == '9': return True else: return False s = 'a2b1c1d1' last_chat = s[0] index = len(s) - 1 digits = '' for i in range(len(s) - 1, -1, -1): while index >= 0 and is_digit(s[index]): digits += s[index] index -= 1
有什么建议么?
你已经完成了将字符串 'aabcd' 转换为出现次数字符串 'a2b1c1d1' 的函数 string_to_occurrences。现在你希望知道如何将出现次数字符串还原回原始字符串。
'aabcd'
'a2b1c1d1'
string_to_occurrences
下面是一个方法,可以根据出现次数字符串 'a2b1c1d1' 还原为原始字符串 'aabcd':
def occurrences_to_string(s): result = '' count = '' for char in s: if char.isdigit(): count += char else: if count: result += char * int(count) count = '' else: result += char return result
这个函数 occurrences_to_string 遍历出现次数字符串中的每个字符。如果字符是数字,则将其添加到计数变量 count 中。如果字符不是数字,则根据计数变量将相应的字符重复添加到结果字符串 result 中。最后返回还原的原始字符串。
occurrences_to_string
count
result
你可以使用以下代码测试该函数:
s = 'a2b1c1d1' original_string = occurrences_to_string(s) print(original_string) # 输出: 'aabcd'
希望这个方法能够帮助你将出现次数字符串转换回原始字符串。如果有任何疑问,请随时提问!