以下の内容はhttps://drken1215.hatenablog.com/entry/2024/10/06/011559より取得しました。


AtCoder ABC 374 B - Unvarnished Report (6Q, 灰色, 200 点)

文字列  S, T のサイズが異なる場合の処理などがちょっとだけややこしい。

問題概要

文字列  S, T が与えられる。次のいずれかの条件を満たす最小の  i を求めよ。ただし、 S = T である場合は 0 と答えよ。

  •  i \le |S| かつ  i \le |T| であって、 S_{i} \neq T_{i} である
  •  i \le |S] かつ  i \gt |T| である
  •  i \gt |S] かつ  i \le |T| である

考えたこと

一番ややこしいのは、次のような場合だ。

  •  S = "abcde"、 T = "abcdefg"
  •  S = "abcdefg"、 T = "abcde"

 S, T の長さの最小値を  M としたとき、 M 文字目までは一致しているような場合だ。

これに対処するために、次のようにしよう。


  •  S = T のとき:答えは 0
  • そうではないとき:答えを表す変数 resres = M で初期化しておく
  •  i = 1, 2, \dots, M に対して、 S_{i} = T_{i} かどうかを判定し、そうでないような最小の i を答える

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S, T;
    cin >> S >> T;
    
    int res = 0;
    if (S.size() != T.size()) res = min(S.size(), T.size()) + 1;
    for (int i = 0; i < min(S.size(), T.size()); i++) {
        if (S[i] != T[i]) {
            cout << i+1 << endl;
            return 0;
        }
    }
    cout << res << endl;
}



以上の内容はhttps://drken1215.hatenablog.com/entry/2024/10/06/011559より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14