給定兩個由小寫字母構成的字符串 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
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/buddy-strings
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
public static boolean buddyStrings(String A, String B) {
if (A.length() != B.length()) {
return false;
}
if(A.equals(B)) {
for (int i = 0; i < A.length(); i++) {
if (A.indexOf(A.charAt(i), i + 1) != -1) {
return true;
}
}
return false;
}
ArrayList list = new ArrayList();
for (int i = 0; i < A.length(); i++) {
if (A.charAt(i) != B.charAt(i)) {
list.add(i);
}
}
if (list.size() == 2) {
boolean flag_0 = A.charAt((int) list.get(0)) == B.charAt((int) list.get(1));
boolean flag_1 = A.charAt((int) list.get(1)) == B.charAt((int) list.get(0));
if (flag_0 && flag_1) {
return true;
}
}
return false;
}