题解 | #字符串的排列#

字符串的排列

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

使用Set去重

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class Solution {
    public ArrayList<String> Permutation(String str) {
        boolean[] visited=new boolean[str.length()];
        ArrayList<String> res=new ArrayList<>();
        StringBuffer path=new StringBuffer();
        Set<String> set=new HashSet<>();                
        backtracking(str, visited, set, res, path);
        return res;
    }
    public void backtracking(String str, boolean[] visited, Set<String> set, ArrayList<String> res, StringBuffer path){
        if(path.length()==str.length()&&!set.contains(path.toString())){
            set.add(path.toString());
            res.add(path.toString());
            return;
        }
        for(int i=0; i<str.length();i++){
            if(visited[i]){
                continue;
            }
            visited[i]=true;
            path.append(str.charAt(i));
            backtracking(str, visited, set, res, path);
            path.deleteCharAt(path.length()-1);
            visited[i]=false;
        }
    }
}
全部评论

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务