1. 題目
2. 描述
給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。
示例 1:
輸入: s = “anagram”, t = “nagaram”
輸出: true
示例 2:輸入: s = “rat”, t = “car”
輸出: false
3. 思路
- 首先長度對比,不同則不是
- 其次用一個長爲 26 的數組來表示各個字符出現的次數
- 將出現在字符串 s 裏的字符個數加 1
- 出現在字符串 t 裏的字符個數減 1
- 最後判斷每個小寫字母的個數是否都爲 0
- 此時主要是進行遍歷操作,時間複雜度爲
4. 實現
public boolean isAnagram(String s, String t) {
// 對比長度,長度不同則不是
if (s.length() != t.length()) {
return false;
}
/* 用一個長爲 26 的數組來表示各個字符出現的次數
* 將出現在字符串 s 裏的字符個數加 1
* 出現在字符串 t 裏的字符個數減 1
* 最後判斷每個小寫字母的個數是否都爲 0
*/
int[] chaCount = new int[26];
for (int i = 0; i < s.length(); i++) {
chaCount[s.charAt(i) - 'a']++;
chaCount[t.charAt(i) - 'a']--;
}
for (int item : chaCount) {
if (item != 0) {
return false;
}
}
return true;
}