突然灵光一闪,想出了一个新奇的方法
查看原帖
突然灵光一闪,想出了一个新奇的方法
1362554
monologues楼主2024/8/5 23:26

可以申请添加题解吗

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
    	 int cnt=0;
    	 string a,b;
    	 cin>>a>>b;
    	 if(a.size()>b.size())swap(a,b);//保证a<b
    	 if(a.size()==b.size())for(int i=0;i<a.size();i++)if(a[i]==b[i])cnt++;//如果长度相同,比较一下a和b每一项是否相同 
    	 if(a.size()+1==b.size())//a比b短1,说明a可能可以通过插入一个字符变成b 
    	 {
    	   bool x=0;
    	   for(int i=0;i<a.size();i++)//i必须是小于a.size()!!!为此提交了3遍 
    	   {
    	   	  if(a[i]!=b[i])x=1;//a和b如果不相同,那么当作a插入了一个b的这一项,同时由于只能插入一个字符,不能再插入了,所以x=1 
    	 	  if(a[i]==b[i+x])cnt++;//如果a插入了字符,则a的每一项都要往前移一项 
		   }
		 }
		 if(cnt>=b.size()-1)cout<<"similar\n";//a和b之间只有一项不同或者全部相同 
		 else cout<<"not similar\n";
	}
    return 0;
}
2024/8/5 23:26
加载中...