字符串的排序
剑指 offer
题⽬描述
输⼊⼀个字符串,按字典序打印出该字符串中字符的所有排列。例如输⼊字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路:
看完剑指 offer 才知道,觉得主要是回溯法。递归。
两步:
1. 求第⼀个位置上所有可能出现的字符,即将第⼀个字符和后⾯的字符交换
2. 固定第⼀个字符,求后⾯字符的排序,然后把后⾯字符分成两部分,后⾯字符的第⼀个字符,以及这个字符后⾯的所有字符。import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> list=new ArrayList<>();
if(str == null||str.length()==0){
return list;
}
change(list,str,0);
//按字符串排序
Collections.sort(list);
return list;
}
public void change(ArrayList<String> list,String str,int index){
if(str.length() == index){
//因为输⼊的字符串中可能有重复的字母
ains(str)){
}else{
list.add(str);
}
}
char[] CharArray();
for(int i=index;i<data.length;i++){
char temp=data[index];
字符串长度排序c语言data[index]=data[i];
data[i]=temp;
change(list,new String(data),index+1);
//交换回来
temp=data[index];
data[index]=data[i];
data[i]=temp;
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论