242. Valid Anagram

Description

Given two strings s and t, write a function to determine if t is an anagram of s.

For example, s = "anagram", t = "nagaram", return true. s = "rat", t = "car", return false.

Note: You may assume the string contains only lowercase alphabets.

Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case?

Solution

Solution 1

/**
 * Solved with hash table
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    "use strict";
    if (s.length !== t.length) {
        return false;
    }
    let table = {};
    for (let i = 0; i < s.length; i++) {
        if (table[s[i]] === undefined) {
            table[s[i]] = 0;
        }
        table[s[i]]++;
    }
    for (let i = 0; i < t.length; i++) {
        if (table[t[i]] > 0) {
            table[t[i]]--;
        } else {
            return false;
        }
    }
    return true;
};

Solution 2

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    "use strict";
    if (s.length !== t.length) {
        return false;
    }
    let sAry = s.split(""), tAry = t.split("");
    sAry.sort();
    tAry.sort();
    return sAry.join("") === tAry.join("") ? true : false;
};

results matching ""

    No results matching ""