题目:
给定两个由小写字母构成的字符串 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
代码如下:
class Solution {
public boolean buddyStrings(String A, String B) {
if(A.length() == 0){
return false;
}
StringBuilder str1 = new StringBuilder();
StringBuilder str2 = new StringBuilder();
int[] pop = new int[26];
for(int i = 0;i < A.length();i++){
if(A.charAt(i) != B.charAt(i)){
str1.append(A.charAt(i));
str2.append(B.charAt(i));
}
int count = (int)(A.charAt(i) - 'a');
pop[count]++;
}
String arr1 = str1.toString();
String arr2 = str2.reverse().toString();
int flag = 0;
for(int i = 0;i < 26;i++){
if(pop[i] >= 2){
flag++;
break;
}
}
if(arr1.length() == 0 && flag == 1){
return true;
}
if(arr1.equals(arr2) && arr1.length() != 0){
return true;
}
return false;
}
}