思路:
遍历得到arr中每一项,如arr = ["abc"],拆到了"abc"和目标str = "dbc"比较,这两个字符串同时并行比较,如果有一个地方不相等,技术diff为1,后续如果再次让diff发生变化,则说明不满足要求,题目要要求及时diff为1,只有一处不同
var MagicDictionary = function () {
this.arr = [];
};
MagicDictionary.prototype.buildDict = function (arr) {
this.arr = arr;
};
MagicDictionary.prototype.search = function (str) {
for (var i = 0; i < this.arr.length; i++) {
if (str.length !== this.arr[i].length) continue;
var diff = 0;
for (var j = 0; j < str.length; j++) {
if (diff > 1) break;
if (str[j] !== this.arr[i][j]) diff++;
}
if (diff === 1) return true;
}
return false;
};
调试代码
var p = new MagicDictionary()
p.buildDict(['abc'])
console.log(p.search("dbc"));//true
console.log(p.search("abc"));//false