题解 | #字符串的排列#

字符串的排列

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;
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 15:07
点赞 评论 收藏
分享
头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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