欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LC.423. Reconstruct Original Digits from English

程序员文章站 2022-04-24 14:07:19
...

LC.423. Reconstruct Original Digits from English

class Solution(object):
    def originalDigits(self, s):
        """
        0, 2, 4, 6, 8 都有唯一的字符标志

        0 zero z
        1 one 剩下的o数量
        2 two w
        3 three 剩下的t的数量
        4 four u
        5 five 剩下的f的数量
        6 six  x
        7 seven 剩下的s的数量
        8 eight g
        9 nine 剩下的i的数量

        """
        char_array = [0] * 26
        num_array  = [0] * 10
        for char in s:
            char_array[ord(char) - ord('a')] += 1

        # 0 的数量
        num_array[0] = char_array[ord('z') - ord('a')]
        for char in 'zero':
            char_array[ord(char) - ord('a')] -= num_array[0]

        # 2 的数量
        num_array[2] = char_array[ord('w') - ord('a')]
        for char in 'two':
            char_array[ord(char) - ord('a')] -= num_array[2]

        # 4 的数量
        num_array[4] = char_array[ord('u') - ord('a')]
        for char in 'four':
            char_array[ord(char) - ord('a')] -= num_array[4]

        # 6 的数量
        num_array[6] = char_array[ord('x') - ord('a')]
        for char in 'six':
            char_array[ord(char) - ord('a')] -= num_array[6]

        # 8 的数量
        num_array[8] = char_array[ord('g') - ord('a')]
        for char in 'eight':
            char_array[ord(char) - ord('a')] -= num_array[8]

        # 1 的数量
        num_array[1] = char_array[ord('o') - ord('a')]
        for char in 'one':
            char_array[ord(char) - ord('a')] -= num_array[1]

        # 3 的数量
        num_array[3] = char_array[ord('t') - ord('a')]
        for char in 'three':
            char_array[ord(char) - ord('a')] -= num_array[3]

        # 5 的数量
        num_array[5] = char_array[ord('f') - ord('a')]
        for char in 'five':
            char_array[ord(char) - ord('a')] -= num_array[5]

        # 7 的数量
        num_array[7] = char_array[ord('s') - ord('a')]
        for char in 'seven':
            char_array[ord(char) - ord('a')] -= num_array[7]

        # 9 的数量
        num_array[9] = char_array[ord('i') - ord('a')]
        for char in 'nine':
            char_array[ord(char) - ord('a')] -= num_array[9]

        result = ''
        for i in range(len(num_array)):
            result += num_array[i] * str(i)
        return result