题解 | #字符串的排列#

字符串的排列

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-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务