FB 电面面经

a----abbbbc -> ++++++++++c

把所有连续相同字母改成加号

同时dash 两侧如果有相同字符,则也整体变为加号

  static String method(String s) {
    char[] cs = s.toCharArray();
    for (int i= 0; i < cs.length; i++) {
      if (cs[i] == '-') {
        int start = i;
        int j = i;
        while (j < cs.length && cs[j] == '-') {
          j++;
        }
        if (j < cs.length && start-1 >= 0 && cs[start-1] == cs[j]) {
          change(cs, i, j-1, cs[j]);
        }
        i = j;
      }
    }
    int index = 0;
    
    while (cs[index] =='-') {
      index++;
    }
    if (index >= cs.length) {
      return new String(cs);
    }
    char c = cs[index];
    int cnt = 1;
    for (int i = index+1; i < cs.length; i++) {

      if (cs[i] == c) {
        cnt++;
        if(i == cs.length-1) {
          change(cs, i-cnt+1, i, '+');
        }
      } else {
        if(cnt>1) {
          change(cs, i-cnt, i-1, '+');
        }
        
        if (cs[i] !='-') {
          c = cs[i];
          cnt = 1;
        } else {
          while (i < cs.length && cs[i] == '-') {
            i++;
          }
          if (i < cs.length) {
            c = cs[i];
            cnt = 1;
          }
        }
      }
      
    }
    return new String(cs);
  }
  static void change(char[] cs, int s, int e, char c) {
    for (int i = s; i <= e; i++) {
      cs[i] = c;
    }
  }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,698评论 0 13
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 12,947评论 0 13
  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 14,681评论 0 7
  • 郁金香消失不见 只有那些不知名的 为了赶在这一季轮回 恣意无忌地生长 拍外景的新人离去 把一天的童话放进背包 不知...
    bluebox阅读 988评论 0 0
  • 慢火车 在轨道上慢慢的 把时间的影子在夕阳下拉得那么长 余晖还未消散 汽笛就打破了这沉静的旷野 我在等 等火车...
    洛之亦阅读 1,521评论 2 2