剑指 Offer II 064. 神奇的字典

115 阅读1分钟

剑指 Offer II 064. 神奇的字典

思路: 遍历得到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