Java递归实现字符串全排列
2016-10-08 15:20
309 查看
public class AllStrings { public static void main(String[] args) { AllStrings as = new AllStrings(); char []chs={'a','c','d'}; System.out.println("chs的全排列如下:"); as.getAllStrings(chs, 0); } public void getAllStrings(char []chs,int from) { /** * 数组为空,直接返回 */ if(chs==null||chs.length==0) { return; } /** * 基本思想:递归 * 递归流程-->要从下标from开始,输出从from到chs.length-1之间的字符的全排列,分成三步 * 1. 从from开始遍历chs,让被遍历到的字符跟排在第一位的字符交换位置 * 2. 递归取from+1-->chs.length-1之间的字符的全排列 * 3. 在把第一步被调换位置的两个字符还原。 * * 直到,从from开始的游标走到chs.length-1,则说明找到一组全排列, * 从from开始输出这组全排列。 */ if(from<chs.length-1){ for(int index=from;index<chs.length;index++) { this.swap(chs, from, index); getAllStrings(chs, from+1); this.swap(chs, from, index); } } else{ for(int index=0;index<=chs.length-1;index++) { System.out.print(chs[index]); } System.out.println(); } } private void swap(char[]arrs,int sIndex,int bIndex) { char tmp = arrs[sIndex]; arrs[sIndex] = arrs[bIndex]; arrs[bIndex] = tmp; } }
测试结果如下:
相关文章推荐
- 字符串全排列与全组合的递归实现-Java版
- 字符串数组元素排列与组合的Java递归实现
- 字符串全排列 Java递归实现
- Java递归实现字符串全排列与全组合
- java 全排列 递归实现
- java递归,实现求全排列
- 递归实现字符串全排列
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 字符串排列和组合的JAVA实现 [No. 44]
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类
- 用递归的思想写编写一个函数reverse_string(char * string)实现字符串反向输出和反向排列
- 排列与组合的Java递归实现 (参考)
- C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列
- JAVA递归实现字符串逆序输出
- 将参数字符串中的字符反向排列(递归实现),可变参数列表函数实现
- 递归的应用,输出字符串的所有排列(java)
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- java字符串全排列的实现方式
- java实现有条件字符串全排列输出
- 【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。