求字符串所有的排列方式
来源:互联网 发布:java上传文件到本地 编辑:程序博客网 时间:2024/05/20 17:59
主要是分为两步:把字符串看成两部分:首个字符和余下的字符,
- -当首个字符为第一个字符时,求余下的字符的排列的方式;这便是首个字符在首个位置上的时候,总的排列方式。
- -把第二个字符与首位置上的字符交换,然后求余下字符串的排列方式(余下字符串按照同样方式处理)。
- -以次类推,直到把最后一个字符放到首位置(首位置是相对来说的)。
/** * 分为两步: * 例如:abc当成两部分,a和余下的部分, * (1)求余下的部分的排列方式 * (2)把b与a交换,求b在首位的排列方式 * 将a分别与后面的字符进行交换。 * (3)将(1)和(2)相加 * @param str * @param begin * @return */ public static ArrayList<String> Permutation(String str,int begin) { ArrayList<String> sum=new ArrayList<String>(); int len=str.length(); //空串 if(len==0){ return null; } int num=begin; //begin处未交换字符时的排列方式 if(begin<len){ sum.addAll(Permutation(str,begin+1)); }else{ sum.add(str); } //begin处与后面字符顺序交换时的排列方式 for(int i=begin+1;i<len;i++){ //将begin,和i位置上的字符进行交换 /*String temp=str.substring(0,begin)+str.charAt(i)+str.substring(begin+1,i)这种转换方式不能按字母顺序输出 +str.charAt(begin)+str.substring(i+1,len);*/String temp=str.substring(0,begin)+str.charAt(i)+str.substring(begin,i) +str.substring(i+1,len); sum.addAll(Permutation(temp,num+1)); } return sum; }
0 0
- 求字符串所有的排列方式
- C++ 求一个字符串的所有排列
- 输入一个字符串,求字符的所有排列
- 求一串字符串的全排列和所有组合
- 字符串的所有排列
- 字符串的所有排列
- 求字符串的排列
- 字母所有的排列方式
- 输出字符串的所有排列
- 列出字符串的所有排列
- 字符串的所有全排列
- 给定字符串的所有排列
- 求字符串的全排列
- 求字符串的全排列
- 求字符串的全排列
- C#实现输入一个字符串输出该字符串字符的所有排列方式
- 求一个序列的所有排列
- 黑马程序员_求任意字符串及其所有子串的全排列
- Linux——安装StarUML时提示依赖关系不满足libgcrypt11>=1.4.5
- Swift开发IOS-UIProgressView
- iOS启动页的设置
- Android Studio安装
- Android APP登录界面设计
- 求字符串所有的排列方式
- BZOJ-1189 紧急疏散evacuate BFS预处理+最大流+二分判定+神建模!!
- 讨论一下你们心目中的最优秀的Ajax框架是什么?
- Codeforces Round #335 (Div. 2) C. Sorting Railway Cars
- Codeforces Round #335 (Div. 2) B. Testing Robots
- iOS 自定义cell侧滑删除、编辑等按钮
- #Objective - C - UI-design - 第五天 -UIKit框架-UIKit-Catalog-UIControl
- linux 添加用户、权限
- nyoj999