我有一个数字“n”(例如,n=60),我的任务是将该数字转换为字符串empty = 'sixzero',并计算字符串的长度,然后按以下方式进一步修改,***'sixzero'的长度为7,因此字符串的进一步修改为'seven',seven的长度为5,因此,它将进一步修改为'five',然后length将为4,因此它将被修改为'four',此时,它应该停止,因为string的length将为4,string的value也为'four'。我需要返回'four'***,所以最初我实现了empty = 'sixzero',但我无法实现最终结果'four'。
class Solution(object):
# (60)
def numbers_of_letters(self,n):
arr = {0:'zero',1:'one',2:'two',3:'three',4:'four',5:'five',
6:'six',7:'seven',8:'eight',9:'nine'}
empty = ''
modi =''
to_char_array = list(map(int, str(n)))
for i in range(len(to_char_array)):
if to_char_array[i] in arr.keys():
empty += str(arr.get(to_char_array[i]))
else:
pass
k=0
while len(empty) not in arr.values():
if len(empty) in arr.keys():
modi += str(arr.get(k))
else:
pass
return modi
if __name__ == "__main__":
n=60
print(Solution().numbers_of_letters(n))
3条答案
按热度按时间0wi1tuuw1#
一个简单的递归方法会给你你需要的答案。注意,无论传递给这个函数的值是什么,结果总是是'four'
as_string()函数将有效地反向返回字符串,例如,对于值60,它将返回'zerosix'。但是,这并不重要,因为我们只关心返回值的长度。
as_string()函数中的整数运算性能明显优于任何涉及与str int之间转换的解决方案<-> int
使用相同的MAP列表:
2nbm6dog2#
方法略有不同,每一步使用两个帮助函数:
h5qlskok3#
因此,当结束条件不为真时,OP形式的答案只是循环:
输出:
four
正如@Fred所指出的,简单的版本是: