मान लीजिए हमारे पास 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 | # |
उदाहरण के लिए, यदि दी गई स्ट्रिंग "49" है, तो संभावित स्ट्रिंग्स होंगी ['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz', 'iw', 'ix', 'iy', 'iz']
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- समस्या को पुनरावर्ती रूप से हल करने के लिए 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("49"))
इनपुट
"49"
आउटपुट
['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz', 'iw', 'ix', 'iy', 'iz']