Given two strings s and t, return true if t is an anagram of s, and false otherwise.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
給予兩個字串分別為 s 和 t,如果 t 是 s 的重組字,則回傳 true,否則回傳 false。 一個重組字是透過重新排列得到不同的單字或片語,通常只使用所有原始字母一次。
Example 1:
Input: s = "anagram", t = "nagaram" Output: true
Example 2:
Input: s = "rat", t = "car" Output: false
Solution:
1. 先判斷 s 和 t 的長度是否不相同,並回傳 false。
2. 將 s 和 t 字串切割,並進行字母排序,再將字母組合。
3. 判斷 s 和 t 是否相同,並回傳true,反之回傳 false。
Code 1: BigO(n log n)
var isAnagram = function(s, t) {
if (s.length !== t.length) return false;
let sortS = s.split("").sort().join(""),
sortT = t.split("").sort().join("")
return sortS === sortT;
};
FlowChart:
Example 1
Input: s = "anagram", t = "nagaram" s = "aaagmnr" t = "aaagmnr" return true
Example 2
Input: s = "rat", t = "car" s = "art" t = "acr" return false
Code 2: BigO(n log n)
var isAnagram = function (s, t) {
if (s.length !== t.length) return false;
if (s.split("").sort().join("") === t.split("").sort().join("")) {
return true;
} else {
return false;
}
};
Code 3: BigO(2n)
var isAnagram = function(s, t) {
if (s.length !== t.length) return false;
const hashTable = {}
for (let i = 0; i < s.length; i++) {
hashTable[s[i]] = (hashTable[s[i]] || 0) + 1
}
for (let j = 0; j < t.length; j++) {
if (!hashTable[t[j]]) return false;
hashTable[t[j]]--
}
return true;
};