मान लीजिए हमारे पास एक संख्या है। संख्या 0 से 2^31 - 1 के बीच कुछ भी हो सकती है। हमें संख्या को शब्दों में बदलना है। इसलिए यदि संख्या 512 है, तो परिणाम "Five hundred twelve" होगा।
हल करने के चरण
- कुछ सूचियां परिभाषित करें जैसे less_than_20, जिसमें एक से उन्नीस तक के सभी शब्द होंगे
- tens नामक एक और सरणी जिसमें बीस, तीस, आदि नब्बे तक हों
- हजार, मिलियन, बिलियन के लिए thousands नामक एक और सरणी
- helper() नामक एक फ़ंक्शन परिभाषित करें, यह n लेगा
- यदि n 0 है, तो खाली स्ट्रिंग वापस करें
- अन्यथा यदि n < 20, तो less_than_20[n] + खाली स्थान वापस करें
- अन्यथा यदि n < 100, तो tens[n/10] + खाली स्थान + helper(n % 10) वापस करें
- अन्यथा less_than_20[n/100] + "Hundred" + helper(n % 100) वापस करें
- मुख्य मेथड से, निम्न करें:
- यदि num 0 है, तो "Zero" वापस करें
- ans := खाली स्ट्रिंग, i := 0
- जब तक num > 0:
- यदि num % 1000 0 नहीं है, तो:
- ans := helper(num % 1000) + thousands[i] + खाली स्थान + ans
- i += 1
- num //= 1000
- यदि num % 1000 0 नहीं है, तो:
- ans.strip() वापस करें
उदाहरण
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