2026/04/30

[LeetCode] 424 Longest Repeating Character Replacement

 Two Pointer

右邊一直向前走

若是當前區間已經不合法, 則更新左邊直到合法為止

國人部落格跟LeetCode官方討論區充斥各種假解

要嘛更新左邊只更新一次

要嘛更新左邊時沒有同步更新當前主要char

不知道是測資太弱還是怎樣= ="

誰說AI時代code review才變得很重要呢?

搜尋引擎時代早就存在的問題

只是goolge search還搜不到一整個會動的code而已

std::max_element回傳的是iterator還要自己「*」

C++真的是太愚蠢了

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
  int characterReplacement(string s, int k) {
    int N = s.size();
    std::vector<int> cnt(26);
    int ans = 0;
    int left = 0;
    int primeCnt=0;
    for (int right = 0; right < N; right++) {
      int rightIdx = s[right] - 'A';
      cnt[rightIdx]++;
      primeCnt = max(primeCnt, cnt[rightIdx]);
      while ((right - left + 1) - primeCnt > k) {
        int leftIdx = s[left] - 'A';
        cnt[leftIdx]--;
        left++;
        primeCnt = *std::max_element(cnt.begin(), cnt.end());
      }
      ans = max(ans, right - left + 1);
    }
    return ans;
  }
};