LC.423. Reconstruct Original Digits from English
程序员文章站
2022-04-24 14:07:19
...
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