给两个单词S1 和S2,判断是否可以在S1 里插入、删除或修改一个字符得到S2。
#include "stdafx.h"
#include "string.h"
int isEqLen(char s1[],char s2[]){
int i,j;
for(i=0;i<100 && s1[i]!='\0';i++){}
for(j=0;j<100 && s2[j]!='\0';j++){}
return i==j;
}
int isModyfiedable(char s1[],char s2[]){
int i,j,k;
if(!isEqLen(s1,s2))return 0 ;
k=0;
for(i=0;i<100 && s1[i]!='\0' && s2[i]!='\0';i++){
if(s1[i]!=s2[i])k++;
if(k==2)return 0;
}
return 1;
}
int isSame(char s1[],char s2[]){
int i;
if(!isEqLen(s1,s2))return 0;
for(i=0;i<100 && s1[i]!='\0' && s2[i]!='\0';i++){
if(s1[i]!=s2[i])return 0;
}
return 1;
}
void clearstr(char s[]){
int i;
for(i=1;i<100;i++){
s[i]='\0';
}
}
int isDeletable(char s1[],char s2[]){
int i,j,k=0;
char s[100];
for(i=0;i<100 && s1[i]!='\0';i++){//kick s1[i] back<<
clearstr(s);
for(j=0;j<100 && s1[j]!='\0';j++){
if(j<i)s[j]=s1[j];
else s[j]=s1[j+1];
if(s[j]=='\0')break;
}
if(isSame(s,s2))k=1;
}
return k;
}
int isInsertable(char s1[],char s2[]){
return isDeletable(s2,s1);
}
int main(int argc, char* argv[])
{
char s1[100],s2[100];
gets(s1); gets(s2);
if(isModyfiedable(s1,s2)){
printf("Yes(isModyfiedable)");
}
if(isDeletable(s1,s2)){
printf("Yes(isDeletable)");
}
if(isInsertable(s1,s2)){
printf("Yes(isInsertable)");
}
// printf("Hello World!\n");isInsertable
getchar();
}