// 1790. Check if One String Swap Can Make Strings Equal
class Solution {
public boolean areAlmostEqual(String s1, String s2) {
int differences = 0;
int first = -1;
int second = -1;
for (int i = 0; i < s1.length(); ++i) {
if (s1.charAt(i) != s2.charAt(i)) {
++differences;
if (differences > 2) {
return false;
}
if (differences == 2) {
second = i;
} else {
first = i;
}
}
}
if (differences == 0) return true;
if (differences == 1) return false;
return s1.charAt(first) == s2.charAt(second) && s1.charAt(second) == s2.charAt(first);
}
}
学习笔记:
这是一道简单题,字符串数组。
先找不同点,如果超过两个就不行,提前返回。
如果没有,就ok。如果有一个,就不行。
只有刚好两个,就需要进一步比较交换后是否可行。