题目描述:
给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。
思路分析:
字符串 A 与 B 相等的情况下,因此,我们应当检查每个索引 i 以寻找具有相同值的两个匹配即为亲密字符串。
字符串 A 与 B 不相等的情况下,找出两个字符不相等的索引,判断交换两个索引对应的字符后是否相等
class Solution {
public boolean buddyStrings(String A, String B) {
if(A.length()!=B.length()){
return false;
}
if(A.equals(B)){
int[] flag=new int[26];
for(char x:A.toCharArray()){
flag[x-'a']++;
}
for(int i=0;i<26;i++){
if(flag[i]>1){
return true;
}
}
return false;
}else{
int first=-1;
int second=-1;
for(int i=0;i<A.length();i++){
if(A.charAt(i)!=B.charAt(i)){
if(first==-1){
first=i;
}else if(second==-1){
second=i;
}else{
return false;
}
}
}
return (second!=-1&&A.charAt(first)==B.charAt(second)&&A.charAt(second)==B.charAt(first));
}
}
}