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