Skip to main content

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 <= 7
  • tiles consists 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;
};