题解 | #字符串的排列#

字符串的排列

http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7

递归的方式

import java.util.*;
public class Solution {
    public ArrayList<String> Permutation(String str) {
       ArrayList<String> res = new ArrayList<>();
       if(str != null){
           pailie(str.toCharArray(),0,res);
         //对结果排序
           Collections.sort(res);
       }
        return res;
    }
    //递归全排列
    public void pailie(char[] c,int i,ArrayList<String> res){
        //set去重复
        Set<Character> s = new HashSet<>();
        if(i == c.length - 1){
            res.add(String.valueOf(c));
        }else{
                for(int j = i;j<c.length;++j){
                    if(!s.contains(c[j])){
                            s.add(c[j]);
                            swap(c,i,j);
                            pailie(c,i+1,res);
                            swap(c,j,i);
                    }
            }
        }   
    }
    //交换
    public void swap(char[] c,int i,int j){
        char flag = c[i];
        c[i] = c[j];
        c[j] = flag;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
05-19 15:21
已编辑
门头沟学院 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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