题解 | #字符串的排列#

字符串的排列

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

每日简单代码,简短代码

import java.util.*;
public class Solution {
    
    

    public ArrayList<String> Permutation(String str) {
        char[] arr = str.toCharArray();
        Arrays.sort(arr);
        boolean[] st = new boolean[str.length()];
        ArrayList<String> ans = new ArrayList<>();
        dfs(arr, st, ans, "");
        return ans;
    }
    private void dfs(char[] arr, boolean[] st, ArrayList<String> ans, String temp) {
        if (temp.length() == arr.length) {
            ans.add(temp);
            return;
        }
        HashSet<Character> set = new HashSet<>();
        for (int i = 0; i < arr.length; i ++ ) {
            if (st[i]) continue;
            if (set.contains(arr[i])) continue;
            set.add(arr[i]);
            st[i] = true;
            dfs(arr, st, ans, temp + arr[i]);
            st[i] = false;
        }
    }
}

全部评论

相关推荐

求求要我吧:你教育经历放在下面干什么,而且27届还是28届啊()另外看你简历有两面,通常来说投递运营岗位一面简历就够了。另外个人总结要写也放在简历最下面,然后你奖项那里是2019年的哇哈哈,那你究竟投递的是社招还是实习?实习的话你是第几届是肯定要写出来的,社招的话你这个工作经历又太短太花了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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