From 509f4d7947600cd1c1d3c8673bd0b0fb5d968b16 Mon Sep 17 00:00:00 2001 From: Andrew Chamamme Date: Mon, 29 Nov 2021 00:18:43 +0000 Subject: [PATCH] oneAway. simple and efficient --- chapter01/1.5 - OneAway/oneAway.js | 72 ++++++------------------------ 1 file changed, 13 insertions(+), 59 deletions(-) diff --git a/chapter01/1.5 - OneAway/oneAway.js b/chapter01/1.5 - OneAway/oneAway.js index 1e66a89..d0b7ab8 100644 --- a/chapter01/1.5 - OneAway/oneAway.js +++ b/chapter01/1.5 - OneAway/oneAway.js @@ -1,64 +1,18 @@ -var oneAway = function(string1, string2) { - // insert a char for str1 -> remove a char for str2 - var checkOneMissing = function(first, second) { - if (first.length !== second.length - 1) { - return false; - } else { - var mulligan = false; - var fP = 0; // first Pointer - var sP = 0; // second Pointer - while (fP < first.length) { - if (first[fP] !== second[sP]) { - if (mulligan) { - return false; - } else { - mulligan = true; - sP++; // second length is longer - } - } else { - fP++; - sP++; +function oneAway(str1,str2){ + str1 = str1.split(""); + str2 = str2.split(""); + let changes = 0; + for(let i = 0; i< str1.length; i++){ + const charIndex = str2.indexOf(str1[i]); + if(charIndex == -1){ + changes +=1; + }else{ + str2.splice(charIndex,1) } - } - return true; } - }; - - var checkOneDiff = function(first, second) { - if (first.length !== second.length) { - return false; - } else { - var mulligan = false; - var fP = 0; // first Pointer - var sP = 0; // second Pointer - while (fP < first.length) { - if (first[fP] !== second[sP]) { - if (mulligan) { - return false; // more than one mismatch - } else { - mulligan = true; // use up mulligan - } - } - fP++; - sP++; - } - return true; - } - }; - // insert a char for str1 -> remove a char for str2 - // check one diff - - // console log checks - // console.log(string1, string2, 'checkMiss', checkOneMissing(string1, string2)); - // console.log(string2, string1, 'checkMiss', checkOneMissing(string2, string1)); - // console.log(string1, string2, 'checkDiff', checkOneDiff(string1, string2)); - - return checkOneMissing(string1, string2) || checkOneMissing(string2, string1) || checkOneDiff(string1, string2); -}; - - -// Test + return changes <= 1; +} console.log(oneAway('pale', 'ple'), true); console.log(oneAway('pales', 'pale'), true); console.log(oneAway('pale', 'bale'), true); -console.log(oneAway('pale', 'bake'), false); \ No newline at end of file +console.log(oneAway('pale', 'bake'), false);