小能豆

字符串aabcd,我需要计算出现的次数并返回。

py

我有这个字符串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,现在我想知道如何将它转换回来。

这是我到目前为止所拥有的:

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

有什么建议么?


阅读 125

收藏
2023-05-30

共1个答案

小能豆

你已经完成了将字符串 '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 中。最后返回还原的原始字符串。

你可以使用以下代码测试该函数:

s = 'a2b1c1d1'
original_string = occurrences_to_string(s)
print(original_string)  # 输出: 'aabcd'

希望这个方法能够帮助你将出现次数字符串转换回原始字符串。如果有任何疑问,请随时提问!

2023-05-30