题解 | #字符串的排列#

字符串的排列

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

public class Solution {
    public ArrayList<String> Permutation(String str) {
       if(str == null){
           return null;
       }
        ArrayList<String> result = new ArrayList<>();
        permutationHelper(str.toCharArray(),0,result);
        Collections.sort(result);
        return result;
    }
        public void permutationHelper(char[] chars, int start, ArrayList<String> result){
        if(start==chars.length -1 ){
            result.add(String.valueOf(chars));
            return;
        }
        Set<Character> charSet = new HashSet<>();
        for (int i = start;i<chars.length;i++){

            if(!charSet.contains(chars[i])) {
                charSet.add(chars[i]);
                char temp = chars[i];
                chars[i] = chars[start];
                chars[start] = temp;
                //i + 1后的全排列
                permutationHelper(chars, start + 1, result);
                char temp2 = chars[i];
                chars[i] = chars[start];
                chars[start] = temp2;
            }
        }
    }
}
全部评论

相关推荐

01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务