IsAlmostPalindrome

Run Settings
LanguageJavaScript
Language Version
Run Command
var isAlmostPalindrome = function(s) { const str = s.replace(/[^A-Za-z0-9]/g, '').toLowerCase(); const strHalf = Math.floor(str.length / 2) let rightPtr = str.length - 1; let leftPtr = 0; let forwardArr = new Array(); let backwardArr = new Array(); for (let i = 0; i < str.length; i++) { let char = str[i]; let backChar = str[rightPtr]; if (char !== backChar) { while (i < str.length -1) { char = str[i+1]; forwardArr.push(char); i++; } break; } forwardArr.push(char); rightPtr--; } for (let j = str.length-1; j > 0; j--) { let char = str[leftPtr]; let backChar = str[j]; if (char !== backChar) { backChar = str[j-1]; while (j > 0) { backChar = str[j-1]; backwardArr.push(backChar); j--; } break; } backwardArr.push(backChar); leftPtr++; } let compareForStr = forwardArr.join(""); let compareBackStr = backwardArr.join(""); if (compareForStr !== str) { let rev = ""; // generate a reverse string using a reverse for loop. for(let l = compareForStr.length - 1; l >= 0; l--) { rev += compareForStr[l]; } if (rev === compareForStr) { return true; } if (compareBackStr !== str) { let rev = ""; // generate a reverse string using a reverse for loop. for(let l = compareBackStr.length - 1; l >= 0; l--) { rev += compareBackStr[l]; } if (rev === compareBackStr) { return true; } } } else { return true; } return false; } //console.log(isAlmostPalindrome("A man!, a plan, a canal: Panada")) //false //console.log(isAlmostPalindrome("A man!, a plan, a canal: Panama")) //true //console.log(isAlmostPalindrome("race a car")) //true console.log(isAlmostPalindrome("abca")) //true //console.log(isAlmostPalindrome("eeccccbebaeeabebccceea")) //true ! compare back string //console.log(isAlmostPalindrome("abccdba")) //true ! compare back string //console.log(isAlmostPalindrome("abcdefdba")) //false ! //console.log(isAlmostPalindrome("")) //true ! //console.log(isAlmostPalindrome("a")) //true ! //console.log(isAlmostPalindrome("ab")) //true //console.log(isAlmostPalindrome("eedede")) //true //console.log(isAlmostPalindrome("abc")) //false //console.log(isAlmostPalindrome("A man, a plan, a canal: Padama")) //false
Editor Settings
Theme
Key bindings
Full width
Lines