[每日一題] 判定是否互為字元重排

DRose發表於2020-07-01

給定兩個字串 s1s2,請編寫一個程式,確定其中一個字串的字元重新排列後,能否變成另一個字串。

示例 1:

輸入: s1 = "abc", s2 = "bca"
輸出: true

示例 2:

輸入: s1 = "abc", s2 = "bad"
輸出: false

說明:

0 <= len(s1) <= 100
0 <= len(s2) <= 100
class Solution {
    public boolean CheckPermutation(String s1, String s2) {
        int length1 = s1.length();
        int length2 = s2.length();

        if (length1 != length2) {
            return false;
        }

        int []index = new int[128];
        for (int i = 0; i < length1; i++) {
            index[s1.charAt(i)] ++;
            index[s2.charAt(i)] --;
        }

        for (int i = 0; i < 128; i++) {
            if (index[i] != 0) {
                return false;
            }
        }

        return true;
    }
}

時間複雜度

O(200)

注意點

  1. int []index = new int[128];。index 陣列大小應為 128,而不是 100。因為我們使用字母的 ASCII 碼作為下標,z 的 ASCII 碼是 122。所以至少要保證大於 122

  2. 同理,第二層 for 迴圈的迴圈次數不應該是 s1.length(),而應該是我們上面定義的 index 的陣列大小 128

來源:力扣(LeetCode)
連結:leetcode-cn.com/problems/check-per...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章