けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 172 B - Minor Change (8Q, 灰色, 200 点)

この問題は、ハミング距離と呼ばれる超重要概念!

問題概要

2 つの長さが等しい文字列  S, T が与えられる。次の操作を繰り返して  S T に変更するとき、操作回数の最小値を求めよ。

操作: S の 1 文字を選んで別の文字に書き換える

制約

  •  1 \le |S| = |T| \le 2 \times 10^{5}

考えたこと

 i = 0, 1, \dots, |S| -1 に対して、

  •  S, T i 文字目が異なるならば、答えに 1 増やす
  • 等しいならば、特に何もしない

と考えればよいでしょう。下のように、for 文を用いて実装できます。

コード

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

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