题解 | 字符串的排列

字符串的排列

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串ArrayList
     */
    ArrayList<String> ans = new ArrayList<>();
    StringBuffer path = new StringBuffer();
    boolean[] used;
    public ArrayList<String> Permutation (String str) {
        // write code here
        if(str.length() < 2){
            ans.add(str);
            return ans;
        }
        used = new boolean[str.length()];
        back_tracking(str);

        return ans;
    }
    public void back_tracking(String str){
        if(path.length() == str.length()){
            ans.add(path.toString());
        }
        ArrayList<Character> chosed = new ArrayList<>();
        for(int i = 0; i < str.length(); i++){
            if(!used[i] && (chosed.isEmpty() || !chosed.contains(str.charAt(i)))){
                chosed.add(str.charAt(i));
                used[i] = true;
                path.append(str.charAt(i));
                back_tracking(str);
                path.deleteCharAt(path.length() - 1);
                used[i] = false;
            }
        }
    }
}

用一个list保存已经出现过的字符。

全部评论

相关推荐

孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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