🔲

ABC285-B: Longest Uncommon Prefix 解説

2023/01/16に公開

問題

長さNの文字列Sが与えられます。
i = 1, 2, ..., N-1のそれぞれについて、次の条件を満たす最大の非負整数lを求めてください。

l + i \leq N
全ての1 \leq k \leq lを満たす整数kについて、Sk文字目とSk+i文字目は異なる。

https://atcoder.jp/contests/abc285/tasks/abc285_b

解説

  • ぱっと見問題がわかりにくいが,頑張って読解してコードを書こう(投げやり)
  • こういうときは入出力例を見るとイメージしやすい
コード
#include<bits/stdc++.h>
using namespace std;

int main(){
  int N;
  cin >> N;
  string S;
  cin >> S;

  for(int i = 1; i <= N-1; ++i){
    int ans = 0;
    for(int l = 0; l < N; ++l){
      if(l + i >= N) break;
      if(S[l] == S[l+i]) break;
      ++ans;
    }
    cout << ans << endl;
  }
}

https://atcoder.jp/contests/abc285/submissions/38100649

GitHubで編集を提案

Discussion