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:
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.
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
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics