242. Valid Anagram 待改进

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.

其实就是比较字母是不是相同的。

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    if (s==t) {
        return true;
    } 
    var num = s.length;
    if (num!==t.length)
        return false;
    var letter;
    var index;
    for (var i = 0 ;i < num; i++) {
        letter = s[i];
        index = t.indexOf(letter);
        if (index===-1) {
            return false;
        } else {
            t = t.replace(letter,'');
        }
    }
    return true;
    
};

这个方法效率不太高
又想到两个新方法:

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    
    //排序后对比
    // var num = s.length;
    // if (num!==t.length)
    //   return false;
    // var a = s.split('').sort();
    // var b = t.split('').sort();
    // for (var i = 0; i<a.length; i++) {
    //     if (a[i]!=b[i]) {
    //         return false;
    //     }
    // }
    // return true;
    
    //Hash Table
    var num = s.length;
    if (num!==t.length)
        return false;
    var map = {};
    for (var i = 0; i < num; i++) {
        if (map[s[i]]!==undefined)
            map[s[i]]++;
        else 
            map[s[i]] = 1;
    }
    for (var j = 0; j<num; j++) {
        if (map[t[j]]===undefined)
            return false;
        else {
            map[t[j]]--;
            if (map[t[j]]===0)
                delete map[t[j]];
        }
    }
    for (var p in map) {
        return false
    }
    return true;
    
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容