给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。 交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。 例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。
class Solution {
public boolean buddyStrings(String a, String b) {
boolean flag = false;
int s = 0;
Set simple = new HashSet();
if(a.length() == b.length()){
int[] cnt = new int[5];
for(int i = 0;i < a.length();i++){
char oneNum = a.charAt(i);
simple.add(oneNum);
if(a.charAt(i) != b.charAt(i)){
cnt[s] =i;
s++;
}
}
if(s == 2){
int bNum = cnt[0];
int eNum = cnt[1];
flag = (a.charAt(bNum) == b.charAt(eNum) && a.charAt(eNum) == b.charAt(bNum));
}else if(s == 0 && !(a.length() == simple.size())){
flag = true;
}
}
return flag;
}
}