ধরুন আমাদের একটি স্ট্রিং আছে যেখানে 2-9 পর্যন্ত সংখ্যা রয়েছে। সংখ্যাটি তৈরি করতে পারে এমন সমস্ত সম্ভাব্য অক্ষর সংমিশ্রণ আমাদের খুঁজে বের করতে হবে। অক্ষরে অঙ্কের একটি ম্যাপিং (ঠিক টেলিফোন বোতামের মতো) নীচে দেওয়া হয়েছে। মনে রাখবেন যে 1 কিছু অক্ষর ম্যাপ করে কিন্তু কোন অক্ষর নেই।
1 | 2 a খ গ | 3 d e f |
4 g h i | 5 jkl | 6 mn o |
7 p q r s | 8 t u v | 9 ইংরেজি বর্ণমালার শেষ চারটি বর্ণ |
* | 0 | # |
উদাহরণস্বরূপ, যদি প্রদত্ত স্ট্রিংটি "49" হয়, তাহলে সম্ভাব্য স্ট্রিংগুলি হবে ['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz ', 'iw', 'ix', 'iy', 'iz']
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- সমস্যাকে পুনরাবৃত্তভাবে সমাধান করতে সল্ভ নামক একটি অ্যারেকে সংজ্ঞায়িত করুন
- সমাধান পদ্ধতিতে সংখ্যা, অক্ষর, ফলাফল, বর্তমান_স্ট্রিং এবং বর্তমান_স্তর লাগে, ফাংশনটি এরকম হবে
- যদি current_level =সংখ্যার দৈর্ঘ্য, তাহলে ফলাফলের পরে বর্তমান স্ট্রিং যোগ করুন এবং ফেরত দিন
- সমস্ত অক্ষরের জন্য i অক্ষরে[সংখ্যা[কারেন্ট_লেভেল]]
- সমাধান সম্পাদন করুন(সংখ্যা, অক্ষর, ফলাফল, বর্তমান_স্ট্রিং + i, বর্তমান_স্তর + 1)
- প্রকৃত ফাংশনটি এরকম হবে
- অঙ্কের দৈর্ঘ্য 0 হলে, খালি তালিকা ফেরত দিন
- সংখ্যা এবং সংশ্লিষ্ট অক্ষরগুলিকে স্ট্রিং হিসাবে ধরে রাখতে একটি মানচিত্র সংজ্ঞায়িত করুন
- ফলাফল :=একটি খালি তালিকা
- কল সমাধান (অঙ্ক, অক্ষর, ফলাফল, “”, 0)
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution(object): def letterCombinations(self, digits): if len(digits) == 0: return [] characters = {2:"abc",3:"def",4:"ghi",5:"jkl",6:"mno",7:"pqrs",8:"tuv",9:"wxyz"} result = [] self.solve(digits,characters,result) return result def solve(self, digits, characters, result, current_string="",current_level = 0): if current_level == len(digits): result.append(current_string) return for i in characters[int(digits[current_level])]: self.solve(digits,characters,result,current_string+i,current_level+1) ob1 = Solution() print(ob1.letterCombinations("49"))
ইনপুট
"49"
আউটপুট
['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz', 'iw', 'ix', 'iy', 'iz']