번호가 있다고 가정합니다. 숫자는 0에서 231 – 1 사이의 모든 것이 될 수 있습니다. 숫자를 단어로 변환해야 합니다. 따라서 숫자가 512와 같으면 결과는 512가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
less_than_20과 같은 목록을 정의하십시오. 이것은 1에서 19까지의 모든 단어를 포함합니다.
-
10, 20, 30 등을 최대 90까지 저장할 수 있는 10과 같은 또 다른 배열
-
수천, 백만 및 10억을 저장할 수 있는 또 다른 어레이
-
helper()라는 하나의 함수를 정의합니다. n
-
n이 0이면 빈 문자열을 반환합니다.
-
그렇지 않으면 n <20일 때 less_than_20[n] + 공백을 반환합니다.
-
그렇지 않으면 n <100일 때 tens[n/10] + 공백 + helper(n mod 10)
를 반환합니다. -
그렇지 않으면 less_than_20[n/100] + "Hundred" + 도우미를 반환합니다(n mod 100)
-
기본 방법에서 다음을 수행하십시오.
-
num이 0이면 "0"을 반환합니다.
-
ans :=빈 문자열, i :=0
-
숫자> 0
동안-
num mod 1000이 0이 아니면
-
ans :=helper(num mod 1000) + 수천[i] + 공백 + ans
-
-
-
-
반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution(object): less_than_20 = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"] tens = ["","Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"] thousands = ["", "Thousand", "Million", "Billion"] def numberToWords(self, num): if num == 0: return "Zero" ans = "" i = 0 while num > 0: if num % 1000 != 0: ans = self.helper(num % 1000) + Solution.thousands[i] + " " + ans i += 1 num //= 1000 return ans.strip() def helper(self, n): if n == 0: return "" elif n < 20: return Solution.less_than_20[n] + " " elif n < 100: return Solution.tens[n//10] + " " + self.helper(n % 10) else: return Solution.less_than_20[n // 100] + " Hundred " + self.helper(n % 100) ob = Solution() print(ob.numberToWords(512)) print(ob.numberToWords(7835271))
입력
512 7835271
출력
Five Hundred Twelve Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One