मान लीजिए कि हमारे पास एक संख्या है। संख्या 0 से 231 - 1 के बीच कुछ भी हो सकती है। हमें संख्या को शब्दों में बदलना है। तो अगर संख्या 512 की तरह है, तो परिणाम पांच सौ बारह होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
कुछ सूचियों को परिभाषित करें जैसे कि less_than_20, इसमें एक से उन्नीस तक के सभी शब्द शामिल होंगे
-
दसियों, बीस, तीस और इसी तरह नब्बे तक रखने के लिए दसियों की तरह एक और सरणी
-
हज़ारों के लिए एक और सरणी, हज़ार, मिलियन और अरब रखने के लिए
-
हेल्पर () नामक एक फ़ंक्शन को परिभाषित करें, इसमें n लगेगा
-
यदि n 0 है, तो रिक्त स्ट्रिंग लौटाएं
-
अन्यथा जब n <20, तब कम_थान_20[n] + रिक्त स्थान
return लौटाएं -
अन्यथा जब n <100, तब दहाई [n/10] + रिक्त स्थान + सहायक (n mod 10)
लौटाएं -
अन्यथा कम_थान_20[n/100] + "सौ" + सहायक (n mod 100)
लौटाएं -
मुख्य विधि से, निम्न कार्य करें
-
अगर संख्या 0 है, तो "शून्य" लौटाएं
-
उत्तर:=खाली स्ट्रिंग, मैं:=0
-
जबकि संख्या> 0
-
अगर num mod 1000 0 नहीं है, तो
-
उत्तर:=सहायक (संख्या मॉड 1000) + हजारों [i] + रिक्त स्थान + उत्तर
-
संख्या:=संख्या / 1000
-
-
-
वापसी उत्तर
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
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