【每日一题0827】最长连续重复字母

:woman_mage:已知一个由纯小写英文字母构成的字符串,我们的任务是编写一个python3函数,找到其中连续重复次数最多的那个字母,及其重复长度。如果最大重复长度存在多个,则取最先出现的那个字母。如果是空字符串,则固定返回('', 0)

示例:
输入:hoooooogwwartss ,输出:("o", 6)
输入:aabb ,输出:("a", 2)

题目难度:中等
题目来源:codewars

def longest_repetition(chars:str) -> (str, int):
    pass

assert longest_repetition("hoooooogwwartss") == ("o", 6)
assert longest_repetition("cbdeuuu900") == ("u", 3)
assert longest_repetition("aabb") == ("a", 2)
assert longest_repetition("") == ('', 0)
def longest_repetition(chars: str) -> (str, int):
    """
    已知一个由纯小写英文字母构成的字符串,我们的任务是编写一个python3函数,找到其中连续重复次数最多的那个字母,
    及其重复长度。如果最大重复长度存在多个,则取最先出现的那个字母。如果是空字符串,则固定返回('', 0) 。
    示例:
    输入:hoooooogwwartss ,输出:("o", 6)
    输入:aabb ,输出:("a", 2)
    :param chars:
    :return:
    """

    left = 0
    right = 1
    result = {}
    while right < len(chars) - 1:
        while chars[left] == chars[right]:
            right += 1
        else:
            result[chars[left]] = right - left
            left = right
            right = left + 1
    if result:
        return sorted(result.items(), key=lambda x: x[1], reverse=True)[0]
    else:
        return '', 0


assert longest_repetition("hoooooogwwartss") == ("o", 6)
assert longest_repetition("cbdeuuu900") == ("u", 3)
assert longest_repetition("aabb") == ("a", 2)
assert longest_repetition("") == ('', 0)