对给定字母进行排列组合
给定一个字符串,求组成字符串(由小写字母构成)所有字母的全部排列,返回组合的数量;字符串长度小于8,字符串为0,返回0.
输入:aab
输出:3
解法:可以根据概率论中的排列组合,计算3*2=6种,去重后即为答案。 第一个字母有n个位置可以交换,下一个字母有n-1个位置,依次类推,使用递归
import java.util.HashSet;
/**
* @Author: cunxiaopan
* @Date: 2020/09/23 20:43
* @Description: 字母排列 算法
*/
public class Arrange {
public static void main(String[] args) {
String str = "AAB";
char[] chs= str.toCharArray();
HashSet set = new HashSet();
arrange(chs, 0, chs.length,set);
System.out.print(set);
}
public static void arrange(char[] chs, int start, int len, HashSet set) {
if (start == len - 1) {
String aString = "";
for (int i = 0; i < chs.length; ++i){
aString =aString + chs[i];
}
set.add(aString);
return;
}
for (int i = start; i < len; i++) {
char temp = chs[start];
chs[start] = chs[i];
chs[i] = temp;
arrange(chs, start + 1, len, set);
temp = chs[start];
chs[start] = chs[i];
chs[i] = temp;
}
}
}

浙公网安备 33010602011771号