मान लीजिए हमारे पास टाइल्स का एक समूह है, जहां प्रत्येक टाइल पर एक अक्षर tiles[i] प्रिंट है। उन गैर-खाली अक्षर अनुक्रमों की संख्या ज्ञात करें जो हम बना सकते हैं। इसलिए यदि इनपुट "AAB" है, तो आउटपुट 8 होगा। अनुक्रम हैं "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक dfs() परिभाषित करें, जो count लेगा
- sum := 0
- i के लिए 1 से 26 तक की रेंज में
- यदि count[i] = 0, तो शेष की जांच किए बिना अगले पुनरावृति के लिए जाएं
- count[i] को 1 से घटाएं, और sum को 1 से बढ़ाएं
- sum := sum + dfs(count)
- count[i] को 1 से बढ़ाएं
- sum लौटाएं
- वास्तविक विधि इस तरह होगी -
- आकार 26 का एक count सरणी बनाएं, और इसे 0 से भरें
- tiles में प्रत्येक तत्व i के लिए
- count[i - 'A' + 1] को 1 से बढ़ाएं
- dfs(count) लौटाएं
उदाहरण
class Solution(object):
def numTilePossibilities(self, tiles):
count = [0 for i in range(27)]
for i in tiles:
count[ord(i)-ord('A')+1] += 1
return self.dfs(count)
def dfs(self, count):
summ = 0
for i in range(1, 27):
if count[i] == 0:
continue
count[i] -= 1
summ += 1
summ += self.dfs(count)
count[i] += 1
return summ
ob = Solution()
print(ob.numTilePossibilities("AAB"))
इनपुट
"AAB"
आउटपुट
8