ICPC2017 国内予選 B ほとんど同じプログラム

解法

文字列をダブルクオーテーションでsplitすると変数名にあたるのは、(0インデックスで数えて)奇数番目。
奇数番目と偶数番目の不一致をそれぞれ数えて、奇数番目のみ1個間違えていたらCLOSE.

ソースコード

ICPCpythonが使えるようになったので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;
}