问题 O: typo
题目描述
You are given two strings S and T. Determine whether it is possible to make S and T equal by doing the following operation at most once:
choose two adjacent characters in S and swap them.
Note that it is allowed to choose not to do the operation.
Constraints
Each of S and T is a string of length between 2 and 100 (inclusive) consisting of lowercase English letters.
S and T have the same length.
输入
Input is given from Standard Input in the following format:
S
T
输出
If it is possible to make S and T equal by doing the operation in Problem Statement at most once, print Yes; otherwise, print No.
样例输入
【样例1】
abc
acb
【样例2】
aabb
bbaa
【样例3】
abcde
abcde
样例输出
【样例1】
Yes
【样例2】
No
【样例3】
Yes
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string s1, s2;
int main() {
cin >> s1 >> s2;
int cnt = 0;
//int arr[3];
int num = 0;
for (int i = 0; i < s1.size(); i++)
{
if (s1[i]!=s2[i])
{
//arr[cnt] = i;
cnt++;
if (s1[i+1]!=s2[i+1]&&s1[i+1]==s2[i]&&s1[i]==s2[i+1])
{
num = 1;
}
}
}
//if (!cnt)
//{
// cout << "Yes" << endl;
// return 0;
//}
if ((cnt == 2 && num==1)||cnt==0)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
return 0;
}