JAVA给出对应字符串所有排列组合
2017-06-22 16:10
316 查看
JAVA给出对应字符串所有排列组合
之前看到一题:求字符串的所有排列组合,例如字符串abc,有以下几种排列组合[acb, bca, abc, cba, bac, cab]
后面考虑到遇到如果有重复字符,普通递归方法会将重复排列组合输出
之后就考虑到使用集合,元素不重复集合,这里使用了HashSet,并且让整个方法直接返回一个排列组合的集合。
public static void main(String[] args) { Set<String> set = new HashSet<>(); String str = "abcc"; set = RollList(str,0); System.out.println(set); } public static Set<String> RollList(String str,int i){ Set<String> set = new HashSet<>(); if (i>=(str.length()-1)) { set.add(str); return set; } char[] charArray = str.toCharArray(); String now = ""; //将第i个元素开始,与后面所有元素都换一次,就能得到所有组合 //例如,abc,i=0,表示,第一个元素从0开始换,得到abc,bac,cba的组合,然后再去算bc,ac,ba的所有组合 for (int k=i; k<str.length(); k++){ char temp = charArray[i]; charArray[i] = charArray[k]; charArray[k] = temp; //交换完后,处理后续,处理完后,再将两数还原位置,使得每次都是以abc的顺序进行交换 now = String.valueOf(charArray); set.addAll(RollList(now,(i+1))); temp = charArray[i]; charArray[i] = charArray[k]; charArray[k] = temp; } return set; }
相关文章推荐
- JAVA 输出指定字符串所有排列组合
- 显示字符串中所有字符的排列组合。
- 显示字符串中所有字符的排列组合。
- 黑马程序员-.NET-C#查找字符串的所有排列组合
- 9.5 确定某字符串的所有排列组合。
- 字符串排列和组合的JAVA实现 [No. 44]
- 算法40(字符串的排列,给出一个函数来输出一个字符串的所有排列)
- java输出字符串的所有排列
- 输入一串不重复的字符串,列出所有可能的组合(java实现)
- 70 给出一个函数来输出一个字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- java写出一个序列的所有排列组合
- 3、给出一个函数输出字符串的所有排列
- 笔试题:给出一个函数来输出字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列。
- 用户输入字符串,输出所有排列 java
- 求一串字符串的全排列和所有组合
- 形如数组1223打印所有不同的组合排列java