题解 | #字符串的排列# Java回溯法

字符串的排列

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

Java

import java.util.ArrayList;
import java.lang.StringBuilder;
public class Solution {
    ArrayList<String> res ;
    int[] vis ;
    public ArrayList<String> Permutation(String str) {
        res = new ArrayList<>();
        vis = new int[str.length()];
        for(int i = 0; i < str.length(); i++){
            getList(new StringBuilder(),i,str);
            vis[i] = 0;
        }

        return res;
    }
    public void getList(StringBuilder sb, int i, String s){
        sb.append(s.charAt(i));
        vis[i] = 1;
        if(sb.length() == s.length()){
            if(!res.contains(sb.toString()))
                res.add(sb.toString());
            return;
        }
        for(int j = 0; j < s.length(); j++){
            if(vis[j] == 0){
                getList(sb, j, s);
                sb.deleteCharAt(sb.length()-1);
                vis[j] = 0; 
            }
        }

    }
}
全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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