問題
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; } }