From bf681d1a91d7b07b812a3bb308bd5d0d2002097e Mon Sep 17 00:00:00 2001 From: YATIN KATHURIA <47096348+Yatin-kathuria@users.noreply.github.com> Date: Mon, 29 Nov 2021 20:45:18 +0530 Subject: [PATCH] merge: alphaNumericPlaindrome optamization (#857) --- String/AlphaNumericPalindrome.js | 44 ++++++++------------------------ 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/String/AlphaNumericPalindrome.js b/String/AlphaNumericPalindrome.js index ee3ca6cbf..b3dc7b7d6 100644 --- a/String/AlphaNumericPalindrome.js +++ b/String/AlphaNumericPalindrome.js @@ -1,12 +1,10 @@ -/** - * alphaNumericPlaindrome should return true if the string has alphanumeric characters that are palindrome irrespective of special characters and the letter case - * @param {string} str the string to check - * @returns `Boolean` - */ - /***************************************************************************** - * What is a palindrome? https://en.wikipedia.org/wiki/Palindrome - * + * @function alphaNumericPlaindrome + * @description alphaNumericPlaindrome should return true if the string has alphanumeric characters that are palindrome irrespective of special characters and the letter case. + * @param {string} str the string to check + * @returns {Boolean} + * @see [Factorial](https://en.wikipedia.org/wiki/Palindrome) + * @example * The function alphaNumericPlaindrome() receives a string with varying formats * like "racecar", "RaceCar", and "race CAR" * The string can also have special characters @@ -16,41 +14,19 @@ * are palindrome i.e remove spaces, symbols, punctuations etc * and the case of the characters doesn't matter * - * This is one of the questions/projects that we have to solve for the - * JavaScript Algorithms and Data Structures course on https://www.freecodecamp.org - * - * Author -- Syed Fasiuddin - * https://github.com/SyedFasiuddin - * ****************************************************************************/ const alphaNumericPlaindrome = (str) => { // removing all the special characters and turning everything to lowercase const newStr = str.replace(/[^a-zA-Z0-9]*/g, '').toLowerCase() - // the newStr variable is a string and only has alphanumeric characters all in lowercase - // making an array of individual characters as it's elements - const arr = newStr.split('') - - // setting a variable to see if change occurs to it - let palin = 0 - - // making a copy of arr with spread operator - const arrRev = [...arr] - // you can use arrRev.reverse() to reverse the array - // or else you can use the below method - - // iterate through the arr and check the condition of palindrome - for (let i = 0; i < arr.length; i++) { - if (arr[i] !== arrRev[arr.length - 1 - i]) { - // if the string is not palindrome then we change palin variable to 1 - palin = 1 + for (let i = 0; i < newStr.length; i++) { + if (newStr[i] !== newStr[newStr.length - 1 - i]) { + return false } } - // if the string is palindrome then palin variable is never changed - if (palin === 0) return true - else return false + return true } export { alphaNumericPlaindrome }