从Leetcode 每日一题练习继续讨论:
1790. 仅执行一次字符串交换能否使两个字符串相等
1790. Check if One String Swap Can Make Strings Equal
题解
本题是一道简单题,直接逐字符遍历两个字符串并挨个字符比较,记录两个字符串中同一位置上出现不同字符的次数并且分别记录出现的不同字符,如果遍历完成后不同字符出现了两次并且出现的不同字符字符相同仅位置不同(一共只有两个字符,则为a[0]=b[1]且a[1]=b[0]),则返回true。否则返回false。
代码
class Solution {
public:
bool areAlmostEqual(string s1, string s2) {
int count = 0;
vector<char> s1d;
vector<char> s2d;
for(int i=0;i<s1.size();i++){
if(s1[i]!=s2[i]){
count++;
if(count>2){
return false;
}
s1d.push_back(s1[i]);
s2d.push_back(s2[i]);
}
}
if(count==0){
return true;
}else if(count==1){
return false;
}else{
if(s1d[0]==s2d[1] && s1d[1]==s2d[0]){
return true;
}
}
return false;
}
};