View Code of Problem 105

#include <bits/stdc++.h>
using namespace std;
int main() 
{	
	int n;
	string ans,str;
	while(cin>>ans)
	{
		if(ans=="END")
			break;
		int i,j;
		cin>>n;
		getchar();
		for(i=0;i<n;i++)
		{
			getline(cin,str);
			if(ans==str)
				cout<<i+1<<" OK!"<<endl;
			else if(str.size()==ans.size())
			{
				for(j=0;j<ans.size();j++)
					if(ans[j]!=str[j])
					{
						cout<<i+1<<" "<<j+1<<" change "<<ans[j]<<endl;
						break;
					}
			}
			else if(ans.size()<str.size())
			{
				if (ans[0] != str[0]) 
				{
					cout << i+1 << " " << 1 << " delete " << str[0] << endl;
					continue;
				}					
				int flag = 0;
				for (int j = 1; j < ans.size(); j++) {
 
					if (ans[j] != str[j]) {
 
						flag = 1;
						if(str[j] == ans[j - 1])
							cout << i+1 << " " << j << " delete " << str[j] << endl;
						else
							cout << i+1 << " " << j + 1 << " delete " <<str[j] << endl;
						break;
					}
				}
				if (flag == 0) 
				{
					int pos = str.size() - 1;
					while (pos > 0 && str[pos] == str[pos - 1])
						pos--;
					cout << i+1 << " " << pos + 1 << " delete " << str[pos] << endl;
				}
			}
			else if(ans.size()>str.size())
			{
				int flag = 0;
				for (int j = 0; j < str.size(); j++)
				 {
					if (ans[j] != str[j]) {
 
						cout << i+1 << " " << j + 1 << " insert " << ans[j] << endl;
						flag = 1;
						break;
					}
				} 
				if (flag == 0) 
				{ 
					int pos = ans.size() - 1;
					while (pos > 0 && ans[pos] == ans[pos - 1])
						pos--;
					cout << i << " " << pos + 1 << " insert " << ans[ans.size() - 1] << endl;
				}
			}
		}
	}
}

Double click to view unformatted code.


Back to problem 105