本文共 932 字,大约阅读时间需要 3 分钟。
import java.util.ArrayList;import java.util.*;public class Solution { //思路:一个字符串的排列可以分为两个部分来看,第一个部分是第一个字母选择随机某一个字符 //然后剩下的字符再选择剩下的字符作为第一个字符,显然这是一个递归的过程,那么我们分别把 //第一个字符和后面的字符一次交换顺序,就可以得到以不同字符开头的排列,但是这里注意,因 //为存在重复的字符,因此当第一个字符和后面的字符重复的时候,不交换字符 public ArrayListPermutation(String str) { ArrayList aList = new ArrayList<>(); if(str == null){ return aList; } PermutationCore(str.toCharArray(),0,aList); Collections.sort(aList); return aList; } public void PermutationCore(char[] chars,int begin, ArrayList al){ //char[] chars = str.toCharArray(); if(begin == (chars.length-1)){ String s = String.valueOf(chars); if(!al.contains(s)) al.add(s); } else{ for(int i = begin; i
转载地址:http://qsnqi.baihongyu.com/