文字列 のサイズが異なる場合の処理などがちょっとだけややこしい。
問題概要
文字列 が与えられる。次のいずれかの条件を満たす最小の
を求めよ。ただし、
である場合は 0 と答えよ。
かつ
であって、
である
] かつ
である
] かつ
である
考えたこと
一番ややこしいのは、次のような場合だ。
= "abcde"、
= "abcdefg"
= "abcdefg"、
= "abcde"
の長さの最小値を
としたとき、
文字目までは一致しているような場合だ。
これに対処するために、次のようにしよう。
のとき:答えは 0
- そうではないとき:答えを表す変数
resをres = Mで初期化しておく に対して、
かどうかを判定し、そうでないような最小の
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; }