LeetCode 2020-11-03: Consecutive Characters

2020/11/04に公開

LeetCode の daily problem に挑戦した記録です。

今日の問題は Consecutive Characters (easy)

問題の概要

  • 与えられた文字列に含まれる文字の連 (同一文字が連続している文字列、run) のうち、最大の連のその長さを返す

考え方

  • 月初らしく、easy 問題で小手調べといった感じですね
  • 文字列を左から右に処理し、一つ前の文字をキープしつつ現在着目している文字と比較する、を繰り返すことで、連の長さを計測できますね
    • このやり方なら時間計算量は O(n) になります
  • 実装 → submit → 一発 accept & beats 100% 達成 🎉

コード

class Solution {
    public int maxPower(String s) {
        if (s.length() <= 1) {
            return s.length();
        }

        int run = 1, maxRun = 1;
        int prev = s.charAt(0);
        for (int i = 1; i < s.length(); i++) {
            int ch = s.charAt(i);
            if (prev == ch) {
                run++;
                maxRun = Math.max(maxRun, run);
            } else {
                run = 1;
            }
            prev = ch;
        }

        return maxRun;
    }
}

Discussion