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