【发布时间】:2020-11-09 16:20:41
【问题描述】:
将n 转换为其英文单词表示,其中 0 n
Python 解决方案:
class Solution:
def helper(self, n):
ones = ['', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine']
teens = ['Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen']
tens = ['', '', 'Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety']
res = ''
if n < 10:
res = ones[n]
elif n < 20:
res = teens[n - 10]
elif n < 100:
res = tens[n // 10] + ' ' + self.helper(n % 10)
elif n < 1000:
res = self.helper(n // 100) + ' Hundred ' + self.helper(n % 100)
elif n < 1000000:
res = self.helper(n // 1000) + ' Thousand ' + self.helper(n % 1000)
elif n < 1000000000:
res = self.helper(n // 1000000) + ' Million ' + self.helper(n % 1000000)
return res.strip()
def convert_to_word(self, n):
if n == 0:
return 'Zero'
return self.helper(n)
我一直在尝试计算这个解决方案的时间和空间复杂度。我看到了不同的答案。有人说时间复杂度是 O(1),因为辅助函数被调用的次数是固定的(即使 n 是一个很大的数)。其他人说它是 O(log(n))。
空间复杂度好像是O(1)?
我很困惑。请帮我澄清一下。谢谢。
【问题讨论】:
标签: time-complexity space-complexity