字符串全排序

传送门 https://leetcode-cn.com/problems/letter-tile-possibilities/

题目描述

你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。

示例

输入:”AAB”
输出:8
解释:可能的序列为 “A”, “B”, “AA”, “AB”, “BA”, “AAB”, “ABA”, “BAA”。

输入:”AAABBC”
输出:188

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {

public int numTilePossibilities(String tiles) {
int[] counter = new int[26];
for (int i=0; i<tiles.length(); i++)
{
counter[tiles.charAt(i) - 'A'] ++;
}
return backTrace(counter);
}

public int backTrace(int[] counter)
{
int ans = 0;
for (int i=0; i<counter.length; i++)
{
if (counter[i] == 0)
continue;
ans ++;
counter[i] -- ;

ans += backTrace(counter);
counter[i]++; // 回溯
}
return ans;
}
}
-------------本文结束  感谢您的阅读-------------