20pts求条
查看原帖
20pts求条
1419482
YZNNN楼主2025/6/22 20:16

没错还是我,rt

#include<bits/stdc++.h>
using namespace std;

void is_similar(string m,string n){
    if(max(n.size(),m.size())-min(n.size(),m.size())>1){cout<<"not similar"<<endl;return;}
    if(n==m){cout<<"similar"<<endl;return;}
    //1.加字符,n减去任意一个字符=m
    if(n.size()-m.size()==1){
    	//cout<<1;
    	int ntom=0;
    	for(int i=0;i<n.size();i++){
        	if(n[i]!=m[i+ntom]){
        		ntom++;
			}
			//cout<<n[i]<<" "<<m[i]<<" "<<ntom<<endl;
    	}
    	if(ntom==1){
    		cout<<"similar"<<endl;return;
		}	
	}
    //2.减字符
    if(m.size()-n.size()==1){
    	//cout<<2;
    	int mton=0;
    	for(int i=0;i<m.size();i++){
        	if(m[i]!=n[i+mton]){
        		mton++;
			}
    	}
    	if(mton==1){
    		cout<<"similar"<<endl;return;
    	}
	}
    //3.变换,不同字符不超过1
    if(m.size()==n.size()){
    	//cout<<3;
        int cnt=0;
        for(int i=0;i<m.size();i++){
            if(n[i]!=m[i])cnt++;
        }
        cnt>1?cout<<"not similar"<<endl:cout<<"similar"<<endl;
        return;
    }
    cout<<"not similar"<<endl;
    return;

}
int main(){
	int t;string a,b; 
	cin>>t;
	while(t--){
		cin>>a>>b;
        is_similar(a,b);
	}
	return 0;
}```
2025/6/22 20:16
加载中...