- s1 和 s2 只能有两个字符不同
- 两个不同的字符位置交换后,s1 == s2
class Solution {
public boolean areAlmostEqual(String s1, String s2) {
char[] sa = new char[2];
char[] ta = new char[2];
int cnt = 0; // 记录不同的次数
if(s1.length() != s2.length()){
return false;
}
for(int i = 0;i<s1.length(); i++){
char x = s1.charAt(i);
char y = s2.charAt(i);
if(x != y){
if(cnt == 2){
// 不同的次数 > 2
return false;
}
sa[cnt] = x;
ta[cnt] = y;
cnt++;
}
}
// 判断交换后是否相等
return sa[0] == ta[1] && sa[1] == ta[0];
}
}