题解 | #字符串的排列#

字符串的排列

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

import java.util.*;
public class Solution {
    final int N = 10;
    ArrayList<String> res = new ArrayList<>();
    char[] chs;//储存字符串中的字符数组
    int step;//深搜树的最大深度,也就是递归终止步数
    int[] path = new int[N];
    boolean[] isVisited = new boolean[N];

    void dfs(int u) {
        if (u == step) {
            StringBuilder sbu = new StringBuilder();
            for (int i = 1; i <= step; i++) {
                sbu.append(chs[path[i] - 1]);
            }
            String s = sbu.toString();
            if (!res.contains(s)) {
                res.add(s);
            }
        }
        for (int i = 1; i <= step; i++) {
            if (!isVisited[i]) {
                isVisited[i] = true;
                path[u + 1] = i;
                dfs(u + 1);
                isVisited[i] = false;
            }
        }
    }

    public ArrayList<String> Permutation(String str) {
        chs = str.toCharArray();
        Arrays.sort(chs);//排序
        step = chs.length;
        dfs(0);//获取全排列,并根据全排列添加字符
        return res;
    }
}
全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 13:05
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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