您的位置:首页 > 其它

【追求进步】字符串的排列

2016-03-31 15:50 253 查看


题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 
输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

在线代码:

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> result=new ArrayList<String>();
//边界条件的处理
if(str==null||str.length()>9||str.length()==0){
return result;
}
str=str.trim();//去除空格
Permutation(str.toCharArray(),0,result);//递归调用
Collections.sort(result);
return result;
}
public void Permutation(char[] charnum,int start,ArrayList<String> result){
if(start==charnum.length){//如果长度为0的处理
result.add(new String(charnum));
}else{
for(int i=start;i<charnum.length;++i){
if(i!=start&&charnum[i]==charnum[start])continue;//有重复的字符则继续
//交换位置
char temp=charnum[start];
charnum[start]=charnum[i];
charnum[i]=temp;
//递归调用
Permutation(charnum,start+1,result);
//
temp=charnum[start];
charnum[start]=charnum[i];
charnum[i]=temp;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: