मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें 2-9 से अंक शामिल हैं। हमें सभी संभावित अक्षर संयोजनों को वापस करना होगा जो संख्या का प्रतिनिधित्व कर सकते हैं। अंकों से अक्षरों की एक मैपिंग (बिल्कुल टेलीफोन बटनों की तरह) नीचे दी गई है। ध्यान दें कि 1 किसी भी अक्षर को मैप नहीं करता है।
1 | 2 ए बी सी | 3 डी ई एफ |
4 जी एच मैं | 5 जम्मू कश्मीर | 6 एम एन ओ |
7 पी क्यू आर एस | 8 तुम वो हो | 9 डब्ल्यू एक्स वाई जेड |
* | 0 | # |
उदाहरण के लिए, यदि दी गई स्ट्रिंग "23" है, तो संभावित तार ["विज्ञापन", "एई", "एएफ", "बीडी", "बी", "बीएफ", "सीडी", "सीई" होंगे ”, "सीएफ"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- समस्या को पुनरावर्ती रूप से हल करने के लिए हल नामक एक सरणी को परिभाषित करें
- समाधान विधि अंक, वर्ण, परिणाम, 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("37"))
इनपुट
"37"
आउटपुट
["dp","dq","dr","ds","ep","eq","er","es","fp","fq","fr","fs"]