题解 | #字符串的排列#

字符串的排列

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Solution {
    public ArrayList<String> Permutation(String str) {
        char[] chars = str.toCharArray();
        ArrayList<String> ans = new ArrayList<>();
        boolean[] isVisited = new boolean[str.length()];
        Map<String, Integer> map = new HashMap<>();
        DFS3(ans, chars, isVisited, new StringBuilder(""), str.length(), map);
        return ans;
    }

    public void DFS3(ArrayList<String> ans, char[] chars, boolean[] isVisited,
                     StringBuilder stringBuilder, int length, Map<String, Integer> map) {
        if (length == 0 && !map.containsKey(stringBuilder.toString())) {
            ans.add(stringBuilder.toString());
            map.put(stringBuilder.toString(), 0);
            return;
        } else {
            for (int i = 0; i < chars.length; i++) {
                if (!isVisited[i]) {
                    isVisited[i] = true;
                    stringBuilder.append(chars[i]);
                    DFS3(ans, chars, isVisited, stringBuilder, length - 1, map);
                    isVisited[i] = false;
                    stringBuilder.deleteCharAt(stringBuilder.length() - 1);
                }
            }
        }
    }
}

全部评论

相关推荐

09-28 09:18
吉首大学 Java
离上岸不远了的牛油很...:同27,你写的专业技能那些是真熟练了吗,我感觉稍微问深一点我都要🐔
你找实习最大的坎坷是什么
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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