剑指offer-27-字符串的排列
字符串的排列
http://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7
思路
将所有字符分成s1 ,s2
已经使用的掉的字符是s1,从s2挑一个与s1组成序列,循环递归,o(n!)
ArrayList<string> arr=new ArrayList<>(set);结构保存在set集合中去重,再构成数组,
Collections.sort(arr);//集合容器的排序,字符串默认字典序排序</string>
代码
import java.util.*;
public class Solution {
Set<String> set=new HashSet<>();
public ArrayList<String> Permutation(String str) {
help("",str);
ArrayList<String> arr=new ArrayList<>(set);
Collections.sort(arr);
return arr;
}
public void help(String s1,String s2){
if(s2.length()<=1){
if(s1.length()+s2.length()>0){set.add(s1+s2);}
return;
}
for(int i=0;i<s2.length();i++){
help(s1+s2.charAt(i),s2.substring(0,i)+s2.substring(i+1));
}
}
} 剑指offer与数据结构 文章被收录于专栏
本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构
阿里巴巴灵犀互娱公司福利 641人发布
查看8道真题和解析
