楼主: lifefailure
跳转到指定楼层
上一主题 下一主题
收起左侧

bb 店面

🔗
amanUSC 2018-9-30 09:36:16 | 只看该作者
全局:
colin_ding 发表于 2018-9-30 09:11
谢谢楼主。
请问一个问题:
  aaabbeeeeba -> bbeeeeba ->bbba -> a;

你的第二个例子不对吧应该返回a吧
回复

使用道具 举报

🔗
 楼主| lifefailure 2018-9-30 09:54:06 | 只看该作者
全局:
amanUSC 发表于 2018-9-30 09:36
你的第二个例子不对吧应该返回a吧

超过3个的都要被消掉
回复

使用道具 举报

🔗
amanUSC 2018-9-30 10:06:06 | 只看该作者
全局:
lifefailure 发表于 2018-9-30 09:54
超过3个的都要被消掉

aaabbeeeeba    这种第一个aaa出现后,就已经删除三个a了,剩下一个a不就不用再删除了吗
回复

使用道具 举报

🔗
 楼主| lifefailure 2018-9-30 10:07:51 | 只看该作者
全局:
amanUSC 发表于 2018-9-30 10:06
aaabbeeeeba    这种第一个aaa出现后,就已经删除三个a了,剩下一个a不就不用再删除了吗

因为是从左往右消,可以理解成俄罗斯方块,因为最左边的a一开始就消了,所以最后只剩一个a
回复

使用道具 举报

🔗
pkk5488 2018-9-30 11:07:19 | 只看该作者
全局:
我觉得应该叫递推?每次消除一个,然后更新字符串直到无法消除为主、
回复

使用道具 举报

🔗
 楼主| lifefailure 2018-9-30 11:12:59 | 只看该作者
全局:
pkk5488 发表于 2018-9-30 11:07
我觉得应该叫递推?每次消除一个,然后更新字符串直到无法消除为主、

反正就是理解成字母一个一个过来,像俄罗斯方块那样,满足条件的就消掉
回复

使用道具 举报

🔗
torymac1 2018-10-1 02:59:05 | 只看该作者
全局:
贴个O(n)的代码,感觉这样一遍traverse就可以了
  1. int main(){
  2.         string s = "abbbadcccc";
  3.         for(int i=0; i<s.size()-2 && s.size()>=3; i++){
  4.                 if(s[i]==s[i+1] && s[i+1]==s[i+2]){
  5.                         char tmp = s[i];
  6.                         while(s[i]==tmp)
  7.                                 s.erase(i, 1);
  8.                         i = max(i-2, 0);
  9.                         i--;
  10.                 }
  11.         }
  12.         cout<<s;
  13. }
复制代码
回复

使用道具 举报

🔗
tjuwdz95 2018-10-1 03:16:09 | 只看该作者
全局:
贡献一下我的stack O(n)代码,求加米
  1. import java.util.Stack;

  2. public class ThreeCharDeduct {
  3.     static String reduce(String s) {
  4.         Stack<Character> stack = new Stack<>();
  5.         char[] a = s.toCharArray();
  6.         for (char c : a) {
  7.             if (stack.size() < 2) {
  8.                 stack.push(c);
  9.             } else {
  10.                 char first = stack.pop();
  11.                 char second = stack.pop();
  12.                 if (c == first && c ==second) {
  13.                     continue;
  14.                 } else {
  15.                     stack.push(second);
  16.                     stack.push(first);
  17.                     stack.push(c);
  18.                 }
  19.             }
  20.         }
  21.         StringBuilder sb = new StringBuilder();
  22.         for (char c : stack) {
  23.             sb.append(c);
  24.         }
  25.         return sb.reverse().toString();
  26.     }

  27.     public static void main(String[] args) {
  28.         System.out.println(reduce("aaab"));
  29.         System.out.println(reduce("aabbeeeba"));
  30.     }
  31. }
复制代码
回复

使用道具 举报

🔗
 楼主| lifefailure 2018-10-1 06:28:39 | 只看该作者
全局:
tjuwdz95 发表于 2018-10-1 03:16
贡献一下我的stack O(n)代码,求加米
[mw_shl_code=java,true]import java.util.Stack;

应该是对的
回复

使用道具 举报

🔗
tjuwdz95 2018-10-1 08:17:28 | 只看该作者
全局:

顺便问一下楼主是什么时候推的啊,认识一些大佬内推被no longer了,感觉很慌
回复

使用道具 举报

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

本版积分规则

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