w3resource

JavaScript: Alphanumeric characters that are palindromes

JavaScript String: Exercise-50 with Solution

A palindrome is a word, number, phrase, or other sequence of symbols that reads the same backwards as forwards, such as the words madam or racecar, the date/time stamps 11/11/11 11:11 and 02/02/2020, and the sentence: "A man, a plan, a canal – Panama". The 19-letter Finnish word saippuakivikauppias (a soapstone vendor), is the longest single-word palindrome in everyday use, while the 12-letter term tattarrattat (from James Joyce in Ulysses) is the longest in English.
Write a JavaScript program to check if a given string contains alphanumeric characters that are palindromes regardless of special characters and letter case.
Test Data:
('$22_|1372^2731|_22') -> true
('12%^&2') -> false
('234%$$%432') -> true
(1234) -> "It must be string"
('aba%$aba') -> true
('Aba%$aba') -> true

Sample Solution:

JavaScript Code:

// Define a function named test that takes an input parameter alpha_text
const test = (alpha_text) => {
  // Check if the input parameter is not a string, if so, return an error message
  if (typeof alpha_text !== 'string') {
    return 'It must be string';
  }

  // Remove non-alphanumeric characters and convert the string to lowercase
  const new_text = alpha_text.replace(/[^a-z0-9]+/ig, '').toLowerCase();

  // Calculate the middle index of the new string
  const mid_index = new_text.length >> 1;

  // Iterate through the first half of the new string
  for (let i = 0; i < mid_index; i++) {
    // Check if the character at the current index is not equal to its counterpart from the end
    if (new_text.at(i) !== new_text.at(~i)) {
      // If not equal, return false (indicating that the string is not a palindrome)
      return false;
    }
  }

  // If the loop completes without finding any unequal pairs, return true (indicating that the string is a palindrome)
  return true;
}

// Test the function with various inputs and print the results
console.log(test('$22_|1372^2731|_22'));
console.log(test('12%^&2'));
console.log(test('234%$$%432'));
console.log(test(1234));
console.log(test('aba%$aba'));
console.log(test('Aba%$aba'));

Output:

true
false
true
It must be string
true
true

Explanation:

In the exercise above,

  • The function "test()" takes one parameter 'alpha_text', representing the input string to be tested.
  • It first checks if the input parameter is not a string. If it's not a string, it returns an error message 'It must be string'.
  • It then removes all non-alphanumeric characters from the input string and converts it to lowercase using regular expressions and the "toLowerCase()" function.
  • Next, it calculates the middle index of the cleaned string.
  • It iterates through the first half of the cleaned string, comparing each character with its counterpart from the end of the string (using bitwise negation to access characters from the end).
  • If any pair of characters are not equal, it returns 'false', indicating that the string is not a palindrome.
  • If all pairs are equal, it returns 'true', indicating that the string is a palindrome.
  • Finally, the function is tested with various inputs, and the results are printed using console.log().

Flowchart:

Flowchart: JavaScript: Check a string is in Pascal case

Live Demo:

See the Pen javascript-string-exercise-50 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus.

Previous: Get unique guid of the specified length, or 32 by default.
Next: Implement Boyer-Moore string-search algorithm.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.