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.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/javascript-exercises/javascript-string-exercise-50.php