题目链接:1079.活字印刷
class Solution {
int res;
public int numTilePossibilities(String tiles) {
int a[] = new int [26];
for (int i = 0; i <tiles.length() ; i++) {
a[tiles.charAt(i)-'A'] = a[tiles.charAt(i)-'A']+1;
}
res =0;
god(a);
return res;
}
public void god(int a[])
{
for (int i = 0; i <a.length ; i++) {
if(a[i]==0)
{
continue;
}
res+=1;
a[i]=a[i]-1;
god(a);
a[i] = a[i]+1;
}
return;
}
}
我们只要一开始做一个字母频次统计,如果当前这个字母的频次为 00,就不再往下执行,马上要回溯了,在回溯的过程中一定要记得状态重置。**