You have a set of tiles
, where each tile has one letter tiles[i]
printed on it. Return the number of possible non-empty sequences of letters you can make.
Example 1:
Input: "AAB" Output: 8 Explanation: The possible sequences are "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA".
Example 2:
Input: "AAABBC" Output: 188
Note:
1 <= tiles.length <= 7
-
tiles
consists of uppercase English letters.
思路:DFS
from collections import Counter
class Solution(object):
def numTilePossibilities(self, tiles):
"""
:type tiles: str
:rtype: int
"""
res=set()
p=[]
def dfs():
res.add(''.join(p))
if not ss: return
for s in d:
if d[s]==0: continue
p.append(s)
d[s]-=1
dfs()
d[s]+=1
p.pop()
ss=[s for s in tiles]
d=Counter(ss)
dfs()
return len(res)-1