DEV Community

NJOKU SAMSON EBERE
NJOKU SAMSON EBERE

Posted on • Updated on

Algorithm 101: 3 Ways to Check if a Sentence is a Palindrome

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

Enter fullscreen mode Exit fullscreen mode

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;
      }
Enter fullscreen mode Exit fullscreen mode
  • 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;
      }
Enter fullscreen mode Exit fullscreen mode
  • 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;
      }
Enter fullscreen mode Exit fullscreen mode

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.

Twitter | LinkedIn | Github

Thank You For Your Time.

Top comments (0)