LeetCode每日一練給定兩個由小寫字母構成的字符串 A 和 B ,只要我們可以通過交換 A 中的兩個字母得到與 B 相等的結果,就返回 true ;否則返回 false 。

給定兩個由小寫字母構成的字符串 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) {
		//1、判斷兩個字符串長度是否相等,必須相等才能保證交換之後的結果相等
		if (A.length() != B.length()) {
			return false;
		} 
		//2、AB兩個字符串相等的情況下,如果a裏面有重複元素就可以進行交換,
		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;
		}
		//2、AB不相等的情況下,定義一個集合存放兩個元素,
		//如果A中下標爲i的和B中下標爲i的結果值不一樣,就存入到list中
		ArrayList list = new ArrayList();
		for (int i = 0; i < A.length(); i++) {
			if (A.charAt(i) != B.charAt(i)) {
				list.add(i);
			}
		}
		//3、list的長度等2的時候
		//取出A中的元素跟B中的下一個元素做對比,相等就返回true
		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;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章