新的好方法
查看原帖
新的好方法
1121276
fuxueziyi楼主2024/11/3 00:09

在题解区没有发现好方法(本蒟蒻看得懂的)于是决定自己像一个思路

#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int s1b[27]={0},s2b[27]={0},flag=0;
void init(string a,string b,char c){//求愚蠢的和错误的,c是安静的 
	for(int i=0;i<a.length();i++)
		if(a[i]!=b[i]){
			cout<<a[i]<<" "<<b[i]<<endl<<c;
			return;
		}
}
int main(){
	cin>>s1>>s2;
	if(s1.length()==s2.length()) init(s1,s2,'-');//如果相同,说明只有愚蠢的和错误的 
	else{
		char aaa='-';
		for(int i=0;i<s1.length();i++)
			if(flag==1) break;
			else if(s1[i]!=s2[i]){//如果 s1[i] 可能是愚蠢的也可能是安静的是 
				for(int j=i;j<s1.length();j++)
					if(s1[j]==s2[i]){//如果'错误的字符'在s1里出现了的话,说明 '愚蠢的字符'是安静的字符 
						aaa=s1[i];
						flag=1;
						break;
					}
			}
		if(aaa=='-') aaa=s1[s1.length()-1];
		s1.erase(remove(s1.begin(),s1.end(),aaa),s1.end());//删除所有安静的字符 
		init(s1,s2,aaa);
	}
} 

本蒟蒻第一篇“题解”,请管理员大大多多包涵。

2024/11/3 00:09
加载中...