剑指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题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构

全部评论

相关推荐

牛油果甜奶昔:别的先不说,牛客还能内推护士?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务