View Code of Problem 105

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
	char ch[2223];
	
	while(scanf("%s",ch))
	{
		if(strcmp(ch,"END")==0)
			break;
		int m;
		scanf("%d",&m);
		for(int i=0;i<m;i++)
		{
			char lux[2223];
			scanf("%s",lux);
			int l=strlen(lux);
			if(l==strlen(ch))
			{
				int j;
				for(j=0;j<l;j++)
					if(lux[j]!=ch[j])
					{
						printf("%d %d change %c\n",i+1,j+1,ch[j]);
						break;
					}
				if(j==l)
					printf("%d OK!\n",i+1);
			}
			else if(l>strlen(ch))
					{
						int j;
						for(j=0;j<strlen(ch);j++)
							if(lux[j]!=ch[j])	//如果重复的在中间字符 
							{	
								while(lux[j]==lux[j-1])
									j--;				//找到第一个不相同的字符 
								printf("%d %d delete %c\n",i+1,j+1,lux[j]);
								break;
							}
						if(j==strlen(ch))	//如果重复的是最后的字符 
						{
							while(lux[j]==lux[j-1])
								j--;				//找到第一个不相同的字符 
							printf("%d %d delete %c\n",i+1,j+1,lux[j]);
						} 
					}
			else 
				{
					int j;
					for(j=0;j<l;j++)
						if(lux[j]!=ch[j])	//逐一比较 
						{	
							while(ch[j]==ch[j-1])
								j--;				//找到第一个不相同的字符 
							printf("%d %d insert %c\n",i+1,j+1,ch[j]);
							break;
						}
					if(j==l)		//如果缺少的是最后的元素,往前找到相同的元素中的第一个 
					{
						while(ch[j]==ch[j-1]&&j!=0)
							j--;
						printf("%d %d insert %c\n",i+1,j+1,ch[j]);
					}	
				}
		}
	}
	return 0;
 } 

Double click to view unformatted code.


Back to problem 105