在题解区没有发现好方法(本蒟蒻看得懂的)于是决定自己像一个思路
#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);
}
}
本蒟蒻第一篇“题解”,请管理员大大多多包涵。