मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें 2-9 के अंक हैं। हमें सभी संभावित अक्षर संयोजनों को खोजना होगा जो संख्या उत्पन्न कर सकते हैं। अंकों से अक्षरों की एक मैपिंग (बिल्कुल टेलीफोन बटनों की तरह) नीचे दी गई है। ध्यान दें कि 1 कुछ वर्णों को मैप करता है लेकिन कोई अक्षर नहीं।
1 | 2 ए बी सी | 3 डी ई एफ |
4 जी एच मैं | 5 जम्मू कश्मीर | 6 एम एन ओ |
7 पी क्यू आर एस | 8 तुम वो हो | 9 डब्ल्यू एक्स वाई जेड |
* | 0 | # |
उदाहरण के लिए, यदि दी गई स्ट्रिंग "49" है, तो संभावित स्ट्रिंग्स ['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz' होंगी। ', 'iw', 'ix', 'iy', 'iz']
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- समस्या को पुनरावर्ती रूप से हल करने के लिए हल नामक एक सरणी को परिभाषित करें
- समाधान विधि अंक, वर्ण, परिणाम, current_string और current_level लेता है, फ़ंक्शन इस तरह होगा
- यदि current_level =अंकों की लंबाई है, तो परिणाम के बाद वर्तमान स्ट्रिंग जोड़ें, और वापस लौटें
- सभी वर्णों के लिए मैं वर्णों में [अंकों [current_level]]
- समाधान करें(अंक, वर्ण, परिणाम, current_string + i, current_level + 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']