Letter Tile Possibilities
Problem statement
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: 8Explanation: 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 <= 7tilesconsists of uppercase English letters.
My solution
/**
* @param {string} tiles
* @return {number}
*/
var numTilePossibilities = function(tiles) {
if (!tiles.length) {
return 0;
}
let count = 0;
let tracker = new Set();
// console.log(tiles)
for (let i = 0; i < tiles.length; i++) {
const char = tiles.charAt(i)
if (tracker.has(char)) {
continue;
}
// console.log(">>>", tiles.slice(0, i) + tiles.slice(i + 1), i)
count += numTilePossibilities(tiles.slice(0, i) + tiles.slice(i + 1)) + 1
tracker.add(char)
}
return count;
};