题解 | #字符串的排列#

字符串的排列

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

import java.util.*;
public class Solution {
    public ArrayList<String> Permutation(String str) {
        ArrayList<String> ans = new ArrayList<>();
        char[] ch = str.toCharArray();
        Arrays.sort(ch);
        boolean[] visited = new boolean[ch.length];
        Arrays.fill(visited,false);
        callBack(ans,new String(),visited,ch);
        return ans;
    }
    //回溯算法
    public void callBack(ArrayList<String> ans,String path,boolean[] visited,char[] ch){
 
        if(path.length() == ch.length){
            ans.add(path);
            return;
        }
        for(int i = 0;i<ch.length;i++){
            if(visited[i]){
                continue;
            }
            if(i>0 && ch[i] == ch[i-1]&&!visited[i-1]){
                continue;
            }
            path = path + ch[i];
            int length = path.length();
            visited[i] = true;
            callBack(ans,path,visited,ch);
            visited[i] = false;
            path = path.substring(0,length-1);
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发
点赞 评论 收藏
分享
07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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