In this episode of Algorithm 101, I will be fulfilling my promise to you. When I made the article on checking for word palindrome, I promised you an article for sentence palindrome.
sentencePalindrome("Was it a car or a cat I saw?"); // true sentencePalindrome("Njoku, Samson Ebere. Plenty!"); // false
Prerequisite
This article assumes that you have basic understanding of javascript's string and array methods.
Let's Check if a Sentence is a Palindrome using:
- toLowerCase(), split(), map(), includes(), reverse(), join()
function sentencePalindrome(sentence) { let newSentence = sentence.toLowerCase().split(""); let newSentenceArray = []; let alphabet = "abcdefghijklmnopqrstuvwxyz"; let numeric = "0123456789"; let alphanumeric = [...alphabet, ...numeric]; newSentenceArray = newSentence.map(char => { if (alphanumeric.includes(char)) { return char; } }); let sanitizedSentence = newSentenceArray.join(""); // reverse sentence let finalSentence = [...sanitizedSentence].reverse().join(""); return finalSentence === sanitizedSentence; }
- regular expression, toLowerCase(), split(), for...of...loop, match(), reverse(), join(), push()
function sentencePalindrome(sentence) { let newSentence = sentence.toLowerCase().split(""); let regEx = /\w/gi; let newSentenceArray = []; for (char of newSentence) { if (char.match(regEx)) { newSentenceArray.push(char); } } let sanitizedSentence = newSentenceArray.join(""); // reverse sentence let finalSentence = [...sanitizedSentence].reverse().join(""); return finalSentence === sanitizedSentence; }
- toUpperCase(), toLowerCase(), split(), forEach...loop, reduce(), join(), push()
function sentencePalindrome(sentence) { let newSentence = sentence.toLowerCase().split(""); let newSentenceArray = []; function isLetter(char) { return char.toLowerCase() != char.toUpperCase(); } function isDigit(char) { return char >= 0 && char <= 9; } newSentence.forEach(char => { if (isDigit(char) || isLetter(char)) { newSentenceArray.push(char); } }); let sanitizedSentence = newSentenceArray .join("") .split(" ") .reduce((acc, char) => acc + char); // reverse sentence let finalSentence = [...sanitizedSentence].reduce( (acc, char) => char + acc ); return finalSentence === sanitizedSentence; }
Conclusion
There are many ways to solve problems programmatically. You are only limited by your imagination. You could try using a different looping construct other than what I have used. I will love to know other ways you solved yours in the comment section.
If you have questions, comments or suggestions, please drop them in the comment section.
Up Next: Algorithm 101: 3 Ways to Check if Two Sentences are Anagrams
You can also follow and message me on social media platforms.
Thank You For Your Time.
Top comments (0)