给定两个由小写字母构成的字符串 A
和 B
,只要我们可以通过交换 A
中的两个字母得到与 B
相等的结果,就返回 true
;否则返回 false
。
示例 1:
输入: A = "ab", B = "ba" 输出: true
示例 2:
输入: A = "ab", B = "ab" 输出: false
示例 3:
输入: A = "aa", B = "aa" 输出: true
示例 4:
输入: A = "aaaaaaabc", B = "aaaaaaacb" 输出: true
示例 5:
输入: A = "", B = "aa" 输出: false
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
A
和B
仅由小写字母构成。
AC代码:
class Solution {
public boolean buddyStrings(String A, String B) {
Map<Character,Integer>map=new HashMap<Character,Integer>();
if(A.length()!=B.length())return false;
int x1=-1,x2=-1;
int flag=0;
for(int i=0;i<A.length();i++){
if(A.charAt(i)!=B.charAt(i)){
flag++;
if(x1!=-1)x2=i;
else x1=i;
}
}
if(flag==2){
if(A.charAt(x1)==B.charAt(x2)&&A.charAt(x2)==B.charAt(x1))
return true;
else
return false;
}
else if(flag==0){
for(int i=0;i<A.length();i++){
if(map.get(Character.valueOf(A.charAt(i)))!=null){
return true;
}
else
map.put(Character.valueOf(A.charAt(i)),1);
}
return false;
}
else return false;
}
}