你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。
示例 1:
输入:"AAB"
输出:8
解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。
示例 2:
输入:"AAABBC"
输出:188
提示:
1 <= tiles.length <= 7
tiles 由大写英文字母组成
思路:
1.先求整个字符串的全排列。
2.然后将每个全排列最后一位依次删除。
3.将所有结果放到set里面去重复。
#include <iostream>
#include <vector>
#include <set>
using namespace std;
class Solution {
public:
int numTilePossibilities(string tiles) {
vector<vector<char>>res;
for(int i=0;i<tiles.size();i++){
temp.push_back(tiles[i]);
}
backtrace(temp,res,tiles.size(),0);