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

[其他] Meta 变种题1047 Remove All Adjacent Duplicates In String到底咋做

全局:

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

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

x
变种题连连乐
遇到只要重复的一直删,然后是递归的删    , 我java写了个, 测试结果一直不对,先贴下我自己的code  有没有大神帮忙fix 下
  1. public static String removeDuplicate_stack(String s) {
  2.         Stack<Character> stack = new Stack<>();
  3.         int idx = 0;

  4.         while (idx < s.length()) {
  5.             char cur = s.charAt(idx);
  6.             if (!stack.isEmpty() && cur == stack.peek()) {
  7.                 char pre = stack.pop();

  8.                 while (idx < s.length() && s.charAt(idx) == pre)
  9.                     idx++;
  10.             } else {
  11.                 stack.push(cur);
  12.                 idx++;
  13.             }
  14.         }
  15.         return stack.stream().map(String::valueOf).collect(Collectors.joining(""));
  16.     }             System.out.println(removeDuplicate_stack( "acbbcaac"));
复制代码

评分

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

查看全部评分


上一篇:【贪心算法 Greedy】Leetcode 455. Assign Cookies (新人求大米!!!)
下一篇:APPLE 最近六个月高频题库 2023
全局:
楼主你这个 aabbbbac 这个例子有歧义啊,先删b的话结果就是c,先删开头2个a的话结果就是ac。删除的顺序对结果有影响的,所以需要定义删除的顺序吗?

评分

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

查看全部评分

回复

使用道具 举报

推荐
 楼主| 荆州刘德华 2023-7-26 06:40:34 来自APP | 只看该作者
全局:
aodeyyoyo 发表于 2023-7-25 22:21
不需要有你if里的那个while,是一次挑两个连着的删掉,如果一串连着的不需要全删掉

不是
是变种题, 任何连续的字符,全部删掉
例如: aabbbbac->(删除4个连续的b)->aaac->(删除3个连续的a)->c

补充内容 (2023-07-26 22:51 +08:00):

错了
纠正下
aabbbbac->(删除2个连续的a)->bbbbac->(删除4个连续的b)->ac

评分

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

查看全部评分

回复

使用道具 举报

推荐
csushin1992 2023-7-26 14:56:46 | 只看该作者
全局:
本帖最后由 csushin1992 于 2023-7-25 23:58 编辑
  1. public String removeDuplicates(String s, int k) {
  2.     char[] chars = s.toCharArray();
  3.     int len=0; // the length of final string
  4.     int j=0;
  5.     while(j<chars.length) {
  6.         if(len!=0 && chars[j]==chars[len-1]) { // len-1 is the last character of the result
  7.             while(j < s.length() &&chars[j]==chars[len-1]) {
  8.                 j++;
  9.             }
  10.             len--; // remove the last character since it was the same as j's character
  11.             j--; // decrease one since later it will still increase by one.
  12.         }
  13.         else {
  14.             chars[len++]=chars[j];
  15.         }
  16.         j++;
  17.     }
  18.     char[] result=Arrays.copyOf(chars, len);
  19.     return new String(result);
  20.     }
复制代码

评分

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

查看全部评分

回复

使用道具 举报

全局:
不需要有你if里的那个while,是一次挑两个连着的删掉,如果一串连着的不需要全删掉
回复

使用道具 举报

🔗
TSMTSM 2023-7-26 07:13:00 来自APP | 只看该作者
全局:
荆州刘德华 发表于 2023-07-25 15:40:34
不是
是变种题, 任何连续的字符,全部删掉
例如: aabbbbac->(删除4个连续的b)->aaac->(删除3个连续的a)->c
经典祖玛消消乐题,用stack可解
回复

使用道具 举报

🔗
bananamuffin 2023-7-26 07:25:52 | 只看该作者
全局:
stack正解
回复

使用道具 举报

无效楼层,该帖已经被删除
全局:
荆州刘德华 发表于 2023-07-25 15:40:34
不是
是变种题, 任何连续的字符,全部删掉
例如: aabbbbac->(删除4个连续的b)->aaac->(删除3个连续的a)->c
两个a不算重复吗?
回复

使用道具 举报

🔗
 楼主| 荆州刘德华 2023-7-26 08:01:05 | 只看该作者
全局:
Borchid 发表于 2023-7-25 23:55
两个a不算重复吗?

算, 只要重复全部删掉
回复

使用道具 举报

🔗
csushin1992 2023-7-26 08:45:50 | 只看该作者
全局:
本帖最后由 csushin1992 于 2023-7-25 17:47 编辑

首先我问你,"abbccbcd"的答案应该是abcd还是ad还说acd?
然后“"abbbccbcd"”的答案应该是什么?是acd还是别的?
回复

使用道具 举报

🔗
 楼主| 荆州刘德华 2023-7-26 08:53:50 | 只看该作者
全局:
csushin1992 发表于 2023-7-26 00:45
首先我问你,"abbccbcd"的答案应该是abcd还是ad还说acd?
然后“"abbbccbcd"”的答案应该是什么?是acd还是 ...

both:
abcd

"abbccbcd"->delete: bb->accbcd->delete cc-> abcd
abbbccbcd->dedete:bbb->accbcd->delete cc-> abcd
回复

使用道具 举报

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

本版积分规则

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