您的位置:首页 > 编程语言 > Java开发

【Java笔试题】输出字符串的全排列

2016-11-20 14:12 218 查看
1、题目

输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所以字符串abc、bac、bca、cab和cba。

2、解题思想

首先将字符串转成字符数组,然后建立recursionSwap函数对字符数组进行排列,如果起始位置大于等于数组长度,则直接输出,否则循环交换该数组的元素位置,打印不同排列。

3、Java代码

public class CombinationABC {
public static void main(String[] args) {
String str = “abc”;
char[] arr = str.toCharArray();
int length = arr.length;
recursionSwap(arr,0,length);
}

public static void recursionSwap(char[] arr,int start,int length){
if(start >= length-1){
print(arr);
return;
}
for(int i = start;i < length;i++){
swap(arr,start,i);
recursionSwap(arr,start+1,length);
swap(arr,start,i);
}
}

public static  void swap(char[] arr,int index1,int index2){  //交换元素
char temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}

public static void print(char[] arr){  //打印数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
System.out.println();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐