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; };