两个单词若是包含相同的字母,次序不一样,则称为字母易位词(anagram)。例如,“silent”和“listen”是字母易位词,而“apple”和“aplee”不是易位词。请定义函数检查两个单词是不是字母易位词。能够假设两个单词字母均为小写。要求算法复杂度尽可能低javascript
* Solution.jsjava
/* 两个单词若是包含相同的字母,次序不一样,则称为字母易位词(anagram)。 例如,“silent”和“listen”是字母易位词,而“apple”和“aplee”不是易位词。 请定义函数检查两个单词是不是字母易位词。能够假设两个单词字母均为小写。 要求算法复杂度尽可能低。 */ function Solution() {} Array.prototype.equals = function(a) { if (a.length !== this.length) return false; for (var i = 0; i <this.length; i++) { if (this[i] !== a[i]) { return false; } } return true; } Solution.anagram = function(s1, s2) { const ALEPH = 26; var c1 = new Array(ALEPH), c2 = new Array(ALEPH); for (var i = 0; i < c1.length; i++) { c1[i] = c2[i] = 0; } var a1 = s1.split('').map(function(c) { return (c.charCodeAt(0) | 0x20) - 97; }), a2 = s2.split('').map(function(c) { return (c.charCodeAt(0) | 0x20) - 97; }); a1.forEach(function(c) { c1[c]++; }); a2.forEach(function(c) { c2[c]++; }); return c1.equals(c2); } module.exports = Solution;
* index.jsnode
var Solution = require('./Solution')
console.log(Solution.anagram('silent', 'listen'));
console.log(Solution.anagram('apple', 'aplee'));算法
E:\code\node>node index.js
true
falseapp