DEV Community

NJOKU SAMSON EBERE
NJOKU SAMSON EBERE

Posted on • Edited on

2 1

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.

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more