Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

A. Three Strings (Codeforces Round #619 Div. 2)

問題

https://codeforces.com/contest/1301/problem/A

問題概要

同じ長さnの文字列a, b, cが与えられる。1からn番目の各文字について、必ずaとcまたはbとcの文字を交換しなければならないとしたとき、aとbの交換後の文字列が一致する可能性があるか?

考察

あるi番目の文字についてaとcを交換するとしたとき、cがbと同じなら、交換後のaとbは一致します。bとaを入れ替えても同じことがいえます。

なので、すべての文字についてa[i] == c[i]またはb[i] == c[i]が成り立てば"YES"です。いずれかの文字についてa[i] != c[i]かつb[i] != c[i]が成り立った時点で"NO"ともいえます。

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

int main() {
    int t;
    cin >> t;
    while (t--) {
        string a, b, c;
        cin >> a >> b >> c;
        int n = a.size();
        bool ok = true;
        for (int i = 0; i < n; i++) {
            if (a[i] != c[i] && b[i] != c[i]) {
                ok = false;
                break;
            }
        }
        cout << (ok ? "YES" : "NO") << endl;
    }
}