题目
输入输出
输入
5
abcda
bacda
输出
YES
输入
3
abc
abc
输出
NO
注意:若字符串相等且有相同字母,也可交换,输出"YES"
例如:
输入
3
aba
aba
输出
YES
可实现aa交换
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;vector<int>v;//记录下不同字符的坐标
string s,ss;cin>>s>>ss;
int count=0;
if(s==ss)//若字符串相等
{
int flag=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(s[i]==s[j])//若同一个字符串有相同的字符
{
flag=1;break;
}
}
}
if(flag==1)
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
for(int i=0;i<n;i++)//字符串不相等,看有几个对应不相等的字符
{
if(s[i]!=ss[i])
{
count++;v.push_back(i);
if(count>2)
break;
}
}
if(count!=2)//没有两个不相同的字符或者有超过两个不相同的字符,都无法进行交换
cout<<"NO"<<endl;
else if(count==2)//若有两个不相等的字符,判断两个字符串的不同字符是否相同
{
if(s[v[0]]==ss[v[1]]&&s[v[1]]==ss[v[0]])
cout<<"YES"<<endl;//相同
else
cout<<"NO"<<endl;//不相同
}
return 0;
}