Description
You have n
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 using the letters printed on those tiles
.
Example 1:
Input: tiles = "AAB" Output: 8 Explanation: The possible sequences are "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA".
Example 2:
Input: tiles = "AAABBC" Output: 188
Example 3:
Input: tiles = "V" Output: 1
Constraints:
1 <= tiles.length <= 7
tiles
consists of uppercase English letters.
Solution
Python3
class Solution:
def numTilePossibilities(self, tiles: str) -> int:
N = len(tiles)
seen = set()
def go(curr, mask):
if curr != "":
seen.add(curr)
for i in range(N):
if mask & (1 << i) == 0:
go(curr + tiles[i], mask | (1 << i))
go("", 0)
return len(seen)
Python
class Solution(object):
def numTilePossibilities(self, tiles):
s = "".join(set(tiles))
ans = []
for char in s:
ans.append(char)
for elem in ans:
temp = elem
for char in s:
temp += char
if temp.count(char)<=tiles.count(char):
ans.append(temp)
temp = elem
return len(set(ans))