【LeetCode】5701. 仅执行一次字符串交换能否使两个字符串相等

第232场周赛 5701. 仅执行一次字符串交换能否使两个字符串相等

思路

  1. 单次遍历统计所有不同的字符个数
  2. 如果统计不同的字符个数为2,将两个字符位置交换后,字符串相等,则输出true

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
bool areAlmostEqual(string s1, string s2) {
if(s1==s2) return true;
int len=s1.size();
int cnt=0;
vector<int> vec;
for(int i=0;i<len;i++)
{
if(s1[i]!=s2[i])
{
cnt++;
vec.push_back(i);
}
}
if(cnt==2&&s2[vec[0]]==s1[vec[1]]&&s2[vec[1]]==s1[vec[0]]) return true;
return false;
}
};