c-打字错误
打字错误
https://ac.nowcoder.com/acm/contest/32992/C
c-打字错误
1.注意题目上说的,最多交换一次,且选择S1中相邻的两个字符交换他们的位置,注意是相邻位置。
2.首先用a,b记录两个字符串不相同位置的下标,res记录不相同位置的个数
3.如果选择S1中相邻的两个字符交换他们的位置,能使s==t,则b-a=1,并且s[a]==t[b]&&s[b]==t[a]
4.c++直接可以用==判断string 类型是否相等
#include <string> using namespace std; string s,t; int main() { cin>>s>>t; if(s==t) cout<<"YES"; else { int a,b,res=0,flag=1; //a,b记录不同位置的下标 for(int i=0;i<s.length();i++) { if(s[i]!=t[i]) { res++; if(res==1) a=i; else if(res==2) b=i; else if(res==3) {flag=0;break;} } } if(flag==0||b-a!=1) cout<<"NO"; //相邻 else { if(s[a]==t[b]&&s[b]==t[a]&&b-a==1) cout<<"YES"; } } return 0; }