ধরুন আমাদের একটি নম্বর আছে। সংখ্যাটি 0 থেকে 231 – 1 এর মধ্যে যেকোনো কিছু হতে পারে। আমাদের সংখ্যাটিকে শব্দে রূপান্তর করতে হবে। সুতরাং সংখ্যাটি যদি 512 এর মত হয়, তাহলে ফলাফল হবে পাঁচশ বারো।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
less_than_20 এর মত কিছু তালিকা সংজ্ঞায়িত করুন, এটি এক থেকে উনিশ পর্যন্ত সকল শব্দ ধারণ করবে
-
দশ, বিশ, ত্রিশ এবং নব্বই পর্যন্ত ধরে রাখতে দশের মতো আরেকটি অ্যারে
-
হাজার, মিলিয়ন এবং বিলিয়ন ধরে রাখার জন্য হাজার হাজারের জন্য আরেকটি অ্যারে
-
Helper() নামে একটি ফাংশন সংজ্ঞায়িত করুন, এটি n
নেবে -
যদি n 0 হয়, তাহলে ফাঁকা স্ট্রিং ফেরত দিন
-
অন্যথায় যখন n <20, তারপর কম_than_20[n] + ফাঁকা স্থান ফেরত দিন
-
অন্যথায় যখন n <100, তারপর টেন [n/10] + ফাঁকা স্থান + সাহায্যকারী(n mod 10)
-
অন্যথায় কম_থান_২০[n/100] + "শত" + সাহায্যকারী(n mod 100)
-
মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
-
যদি সংখ্যা 0 হয়, তাহলে “শূন্য”
ফেরত দিন -
উত্তর :=খালি স্ট্রিং, i :=0
-
যখন সংখ্যা> 0
-
যদি num mod 1000 0 না হয়, তাহলে
-
উত্তর :=সাহায্যকারী(সংখ্যা মোড 1000) + হাজার[i] + ফাঁকা স্থান + উত্তর
-
-
-
-
উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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