Is string one places edit away
by Alex Myronov
Babel + JSX
const isOneChartInserted = (str1, str2) => {
let index1 = 0
let index2 = 0
for (let i = 0; i < str1.length; i++) {
if (str1[index1] === str2[index2]) {
index1++
index2++
} else {
if (index1 === index2) {
index2++
} else {
return false
}
}
}
return true
}
const isSingleReplacement = (str1, str2) => {
let oneZeroReplacement
for (let i = 0; i < str1.length; i++) {
if (str1[i] !== str2[i]) {
if (oneZeroReplacement) {
return false
}
oneZeroReplacement = true
}
}
return oneZeroReplacement || true
}
const oneEditAway = (str1, str2) => {
if (str1.length === str2.length) {
return isSingleReplacement(str1, str2)
} else if (str1.length - 1 === str2.length) {
return isOneChartInserted(str2, str1)
} else if (str2.length - 1 === str1.length) {
return isOneChartInserted(str1, str2)
}
return false
}
console.log("pale, ple", oneEditAway('pale', 'ple'))
console.log("pales, pale", oneEditAway('pales', 'pale'))
console.log("pale, bale", oneEditAway('pale', 'bale'))
console.log("pale, bae", oneEditAway('pale', 'bae'))