字符串的排列__
来源:互联网 发布:查询树形 mysql 编辑:程序博客网 时间:2024/06/09 19:35
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
思路:
每次将自己加入Treeset,然后依次交换自己与自己后面的每个位置的字符。这里用递归,就可以让每个都弄到。
每次换了以后,1.把自己加入。2.生出递归分支,让已经换了的字符串继续换下去。3.自己这层得复原,复原了自己的这层不换,换自己后面的换。
import java.util.ArrayList;import java.util.TreeSet;import java.util.Iterator;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String>list = new ArrayList<>();TreeSet<String> treeSet = new TreeSet<>();if(str.length()==0)return list;findString(treeSet, str, 0);Iterator<String>iterator = treeSet.iterator();while(iterator.hasNext()){list.add(iterator.next());}return list; } public void findString(TreeSet<String>treeSet,String str,int index){if(index==str.length())return;for(int i =index;i<str.length();i++){char array []=str.toCharArray();char temp = array[index];array[index] = array[i];array[i] = temp;treeSet.add(new String(array.clone())); findString(treeSet, new String(array), index+1);temp = array[index];array[index] = array[i];array[i] = temp; findString(treeSet, str, i+1);}}}
阅读全文
0 0
- 字符串的排列__
- 字符串的全排列
- 字符串的全排列
- 转载 字符串的排列
- 字符串的排列--总结
- 字符串的排列
- 字符串的全排列
- 字符串的排列
- 53.字符串的排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的排列
- 字符串的排列
- 字符串的排列
- 字符串的倒序排列
- 字符串的全排列
- 网络获取bitmap
- NetBeans打包报错
- Java知识小结—(3)
- DRML(2016-CVPR)重现过程记录---(9)问题解决与最终结果
- vs快捷键
- 字符串的排列__
- Ubuntu安装anaconda和tensorflow
- JAVA基于poi实现操作Excel
- MOOC清华《程序设计基础》第4章:筛法求素数
- 算法设计与应用基础系列10
- Angular程序架构
- JQuery 的跨域方法 可跨新浪、腾讯、经网等任意网站
- Android开发该学习哪些东西?
- Android源码目录结构