CHATCHIT - Chat chit

Tác giả: khuc_tuan

Ngôn ngữ: C++

#include <string>
#include <iostream>
#include <map>

using namespace std;

map<string,string> RW, R;

void init() {
RW["k"]="khong";
RW["ko"]="khong";
RW["ng"]="nguoi";
RW["n"]="nhieu";
RW["dc"]="duoc";
RW["hok"]="khong";
RW["ntn"]="nhu the nao";
RW["kq"]="ket qua";
R["j"]="gi";
R["w"]="qu";
R["f"]="ph";
R["dz"]="d";
R["z"]="d";
}


int  main() {
	init();
	string s;
	getline( cin, s);
	bool tiep = true;
	while(tiep) {
		tiep = false;
		for(int i=0;i<s.length();++i) if(islower( s[i])) {
			int st = i;
			int en = i;
			while(st>0 && islower(s[st-1])) --st;
			while(en<(int)s.length()-1 && islower(s[en+1])) ++en;
			string w = s.substr( st, en-st+1);
			if(RW.count(w)) {
				tiep = true;
				s.replace( st, en-st+1, RW[w]);
				break;
			}
		}
	}
	//cout << s << endl;
	tiep = true;
	while(tiep) {
		tiep = false;
		for(int i=0;i<(int)s.length()-1;++i) if(R.count(string("")+s[i] + s[i+1])) {
			tiep = true;
			//cout << s << endl;
			s.replace( i, 2, R[string("")+s[i]+ s[i+1]]);
			//cout << " sau : " << s << endl;
			break;
		}
		for(int i=0;i<s.length();++i) if(R.count(string("")+s[i])) {
			tiep = true;
			s.replace( i, 1, R[string("")+s[i]]);
			break;
		}
		
	}
	cout << s << endl;
	//system("pause");
	return 0;
}

Download