查看: 890| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

[高频题] 一道dfs求解。

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
public static List<String> permutation(String s) {
        List<String> res = new ArrayList<>();
        if (s == null) {
            return res;
        }
        if (s.length() == 0) {
            res.add("");
            return res;
        }
        char[] chars = s.toCharArray();
        Arrays.sort(chars);
        String str = chars.toString();
        StringBuilder sb = new StringBuilder();
        boolean[] added = new boolean[s.length()];
        dfs(res, sb, str, added);
        return res;
}

private static void dfs(List<String> res, StringBuilder sb, String s, boolean[] added) {
        if (sb.length() == s.length()) {
            res.add(sb.toString());
            return;
        }

        for (int i = 0; i < s.length(); i++) {
            if (added[i]) {
                continue;
            }
            if (i > 0 && s.charAt(i) == s.charAt(i - 1) && added[i - 1] == false) {
                continue;
            }
            sb.append(s.charAt(i));
            added[i] = true;
            dfs(res, sb, s, added);
            sb.setLength(sb.length() - 1);
            added[i] = false;
        }
}



为什么这里会越界?
if (added[i])

我是怎么想也想不明白。

上一篇:新人leetcode up主会发现在的daily challenge 有时也发contest 希望能帮助大家
下一篇:leetcode会员 鲜为人知但是好用的小功能?
全局:
i是0的时候。是不是就出错了?
回复

使用道具 举报

全局:
你确定是这里吗
回复

使用道具 举报

全局:
chars 转换成String时候错了,不能直接用chars.toString
应该用String str= new String (chars)

评分

参与人数 1大米 +3 收起 理由
IAMKEVINNIU + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
 楼主| IAMKEVINNIU 2020-7-27 09:32:49 | 只看该作者
全局:
Sunny_cat 发表于 2020-7-27 05:36
chars 转换成String时候错了,不能直接用chars.toString
应该用String str= new String (chars)

正解正解,感谢大佬!
回复

使用道具 举报

🔗
 楼主| IAMKEVINNIU 2020-7-27 09:35:00 | 只看该作者
全局:
leixiang5 发表于 2020-7-27 02:22
i是0的时候。是不是就出错了?

i = 0的时候怎么可能会出错。
chars.toString()把它转换成更长的string了,当i==used.length的时候才出错。
回复

使用道具 举报

🔗
 楼主| IAMKEVINNIU 2020-7-27 09:35:25 | 只看该作者
全局:
pandami 发表于 2020-7-27 02:30
你确定是这里吗

楼下正解!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表