ধরুন আমাদের একটি স্ট্রিং আছে যেখানে 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 | # |
উদাহরণস্বরূপ, যদি প্রদত্ত স্ট্রিংটি "23" হয়, তবে সম্ভাব্য স্ট্রিংগুলি হবে [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce” ”, “cf”]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- সমস্যাকে পুনরাবৃত্তভাবে সমাধান করতে সল্ভ নামক একটি অ্যারেকে সংজ্ঞায়িত করুন
- সমাধান পদ্ধতিতে সংখ্যা, অক্ষর, ফলাফল, বর্তমান_স্ট্রিং এবং বর্তমান_স্তর লাগে, ফাংশনটি এরকম হবে
- যদি 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("37"))
ইনপুট
"37"
আউটপুট
["dp","dq","dr","ds","ep","eq","er","es","fp","fq","fr","fs"]