1. 程式人生 > >859. Buddy Strings - LeetCode

859. Buddy Strings - LeetCode

code script true diff http turn 記錄 () 思路

Question

859. Buddy Strings

技術分享圖片

技術分享圖片

Solution

題目大意:

兩個字符串,其中一個字符串任意兩個字符互換後與另一個字符串相等,只能互換一次

思路:

diff 記錄不同字符數
長度不同
abc abd     無重復且diff == 1    ca[3] != cb[3]
abc abc     無重復且diff > 2
aa aa       aa重復
ab ba       diff == 2
aabc aabc   aa重復
aacb aabc   diff == 2

Java實現:

public boolean buddyStrings(String A, String B) {
    if (A.length() != B.length()) return false;
    int[] ca = new int[26];
    int[] cb = new int[26];
    int diff = 0;
    for (int i = 0; i < A.length(); i++) {
        ca[A.charAt(i) - 'a']++;
        cb[B.charAt(i) - 'a']++;
        if (A.charAt(i) != B.charAt(i)) diff++;
    }
    for (int i = 0; i < ca.length; i++) {
        if (diff == 0 && ca[i] > 1) return true;
        if (ca[i] != cb[i]) return false;
    }
    return diff == 2;
}

859. Buddy Strings - LeetCode