ICPC2017 国内予選 B ほとんど同じプログラム
解法
文字列をダブルクオーテーションでsplitすると変数名にあたるのは、(0インデックスで数えて)奇数番目。
奇数番目と偶数番目の不一致をそれぞれ数えて、奇数番目のみ1個間違えていたらCLOSE.
ソースコード
ICPCでpythonが使えるようになったのでpythonのが楽かも。
int main(){ string s, t; while(cin >> s >> t, s != "."){ if(s == t){ cout << "IDENTICAL" << endl; continue; } auto split = [](string s, char d){ vector<string> ans; int p, cnt = 0; while((p = s.find(d)) != s.npos){ ans.pb(s.substr(0, p)); s = s.substr(p + 1); } if(s.size()) ans.pb(s); return ans; }; vector<string> sv = split(s, '\"'); vector<string> st = split(t, '\"'); if(sv.size() == st.size()){ int even = 0, odd = 0; rep(i, sv.size()) if(sv[i] != st[i]){ if(i % 2) odd++; else even++; } if(odd == 1 && even == 0){ cout << "CLOSE" << endl; continue; } } cout << "DIFFERENT" << endl; } return 0; }