給定兩個字串 s 和 t ,撰寫一個函式來判斷 t 是否是 s 的字母異位詞,例如:輸入 s = "anagram",t = "nagaram",s 和 t 是字母異位詞,而 s = "rat",t = "car",此時 s 和 t 不是字母異位詞,你可以假設字串中只有小寫字母
解題思路
使用哈希映射,首先判斷兩個字串長度是否相等,不相等則直接回傳 false,若相等,則用一個陣列初始化 26 個字母哈希表,遍歷字串 s 和 t,s 負責在對應位置增加,t 負責在對應位置減少,如果哈希表的值都為 0,則二者是字母異位詞
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()) {
return false;
}
int[] array = new int[26];
for(int i = 0; i < s.length(); i++) {
array[s.charAt(i) - 'a']++;
array[t.charAt(i) - 'a']--;
}
for(int i = 0; i < array.length; i++) {
if(array[i] != 0) {
return false;
}
}
return true;
}
}
也可以借助排序,看排序后的字串是否相等即可判斷
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226359.html
標籤:其他
