मान लीजिए हमारे पास 2-9 तक के अंकों वाली एक स्ट्रिंग है। हमें उन सभी संभावित अक्षर संयोजनों को वापस करना होगा जो संख्या दर्शा सकती है। टेलीफोन बटन की तरह अंक से अक्षरों का एक मैपिंग नीचे दिया गया है। ध्यान दें कि 1 किसी भी अक्षर से मैप नहीं होता।
| 1 | 2 a b c | 3 d e f |
| 4 g h i | 5 j k l | 6 m n o |
| 7 p q r s | 8 t u v | 9 w x y z |
| * | 0 | # |
एक उदाहरण के लिए, यदि दी गई स्ट्रिंग "23" है, तो संभावित स्ट्रिंग्स ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"] होंगे
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- समस्या को पुनरावर्ती रूप से हल करने के लिए solve नामक एक सरणी परिभाषित करें
- solve मेथड digits, characters, result, current_string और current_level लेता है, फ़ंक्शन इस तरह होगा
- यदि current_level = digits की लंबाई, तो current string को result के बाद जोड़ें, और वापस लौटें
- characters[digits[current_level]] में सभी कैरेक्टर्स i के लिए
- solve(digits, characters, result, current_string + i, current_level + 1) करें
- वास्तविक फ़ंक्शन इस तरह होगा
- यदि digits की लंबाई 0 है, तो एक खाली सूची लौटाएं
- संख्याओं और संबंधित कैरेक्टर्स को स्ट्रिंग के रूप में रखने के लिए एक मैप परिभाषित करें
- result := एक खाली सूची
- solve(digits, characters, result, "", 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"]