Open In App

Print longest palindrome word in a sentence

Given a string str, the task is to print longest palindrome word present in the string str.
Examples: 

Input : Madam Arora teaches Malayalam 
Output: Malayalam 
Explanation: The string contains three palindrome words (i.e., Madam, Arora, Malayalam) but the length of Malayalam is greater than the other two.
Input : Welcome to GeeksforGeeks 
Output : No Palindrome Word 
Explanation:The string does not contain any palindrome word so the output is No Palindrome Word. 

Approach: 




/* C++ program to print longest palindrome
word in a sentence and its length*/
#include <iostream>
#include <algorithm>
#include <string>
 
using namespace std;
 
// Function to check if a
// word is palindrome
bool checkPalin(string word)
{
    int n = word.length();
 
    // making the check case
    // case insensitive
    // word = word.toLowerCase();
    transform(word.begin(), word.end(),
              word.begin(), ::tolower);
 
    // loop to check palindrome
    for (int i = 0; i < n; i++, n--)
        if (word[i] != word[n - 1])
            return false;
 
    return true;
}
 
// Function to find longest
// palindrome word
string longestPalin(string str)
{
     
    // to check last word for palindrome
    str = str + " ";
 
    // to store each word
    string longestword = "", word = "";
 
    int length, length1 = 0;
    for (int i = 0; i < str.length(); i++)
    {
        char ch = str[i];
 
        // extracting each word
        if (ch != ' ')
            word = word + ch;
        else {
            length = word.length();
            if (checkPalin(word) &&
                       length > length1)
            {
                length1 = length;
                longestword = word;
            }
 
            word = "";
        }
    }
 
    return longestword;
}
 
// Driver code
int main()
{
    string s = "My name is ava and i love"
                         " Geeksforgeeks";
 
    if (longestPalin(s) == "")
        cout<<"No Palindrome"<<" Word";
    else
        cout<<longestPalin(s);
    return 0;
}
 
// This code is contributed by Manish
// Shaw (manishshaw1)




/*Java program to print longest palindrome
word in a sentence and its length*/
 
public class GFG {
 
    // Function to check if a
    // word is palindrome
    static boolean checkPalin(String word)
    {
        int n = word.length();
 
        // making the check case
        // case insensitive
        word = word.toLowerCase();
 
        // loop to check palindrome
        for (int i = 0; i < n; i++, n--)
            if (word.charAt(i) !=
                       word.charAt(n - 1))
                return false;
 
        return true;
    }
 
    // Function to find longest
    // palindrome word
    static String longestPalin(String str)
    {
        // to check last word for palindrome
        str = str + " ";
 
        // to store each word
        String longestword = "", word = "";
 
        int length, length1 = 0;
        for (int i = 0; i < str.length(); i++)
        {
            char ch = str.charAt(i);
 
            // extracting each word
            if (ch != ' ')
                word = word + ch;
            else {
                length = word.length();
                if (checkPalin(word) &&
                             length > length1)
                {
                    length1 = length;
                    longestword = word;
                }
 
                word = "";
            }
        }
 
        return longestword;
    }
 
    // Driver code
    public static void main(String args[])
    {
        String s = new String("My name is ava "
                + "and i love Geeksforgeeks");
 
        if (longestPalin(s) == "")
            System.out.println("No Palindrome"
                            + " Word");
        else
            System.out.println(longestPalin(s));
    }
}




# Python 3 program to print longest palindrome
# word in a sentence and its length
 
# Function to check if a word is palindrome
def checkPalin(word):
 
    n = len(word)
 
    # making the check case
    # case insensitive
    word = word.lower()
 
    # loop to check palindrome
    for i in range( n):
        if (word[i] != word[n - 1]):
            return False
        n -= 1
 
    return True
 
# Function to find longest
# palindrome word
def longestPalin(str):
     
    # to check last word for palindrome
    str = str + " "
 
    # to store each word
    longestword = ""
    word = ""
 
    length1 = 0
    for i in range(len(str)):
        ch = str[i]
 
        # extracting each word
        if (ch != ' '):
            word = word + ch
        else :
            length = len(word)
            if (checkPalin(word) and
                length > length1):
                length1 = length
                longestword = word
 
            word = ""
 
    return longestword
 
# Driver code
if __name__ == "__main__":
     
    s = "My name is ava and i love Geeksforgeeks"
 
    if (longestPalin(s) == ""):
        print("No Palindrome Word")
    else:
        print(longestPalin(s))
 
# This code is contributed by ita_c




<script>
/*Javascript program to print longest palindrome
word in a sentence and its length*/
     
    // Function to check if a
    // word is palindrome
    function checkPalin(word)
    {
        let n = word.length;
  
        // making the check case
        // case insensitive
        word = word.toLowerCase();
  
        // loop to check palindrome
        for (let i = 0; i < n; i++, n--)
            if (word[i] !=
                       word[n-1])
                return false;
  
        return true;
    }
     
    // Function to find longest
    // palindrome word
    function longestPalin(str)
    {
        // to check last word for palindrome
        str = str + " ";
  
        // to store each word
        let longestword = "", word = "";
  
        let length, length1 = 0;
        for (let i = 0; i < str.length; i++)
        {
            let ch = str[i];
  
            // extracting each word
            if (ch != ' ')
                word = word + ch;
            else {
                length = word.length;
                if (checkPalin(word) &&
                             length > length1)
                {
                    length1 = length;
                    longestword = word;
                }
  
                word = "";
            }
        }
  
        return longestword;
    }
     
    // Driver code
    let s="My name is ava "
                + "and i love Geeksforgeeks";
    if (longestPalin(s) == "")
        document.write("No Palindrome"
                            + " Word");
    else
        document.write(longestPalin(s));
                
    // This code is contributed by rag2127
</script>




/* C# program to print longest palindrome
word in a sentence and its length*/
using System;
class GFG
{
    // Function to check if a
    // word is palindrome
    static bool checkPalin(string word)
    {
        int n = word.Length;
     
        // making the check case
        // case insensitive
        word = word.ToLower();
     
        // loop to check palindrome
        for (int i = 0; i < n; i++, n--)
            if (word[i] != word[n - 1])
                return false;
     
        return true;
    }
     
    // Function to find longest
    // palindrome word
    static string longestPalin(string str)
    {
         
        // to check last word for palindrome
        str = str + " ";
     
        // to store each word
        string longestword = "", word = "";
     
        int length, length1 = 0;
        for (int i = 0; i < str.Length; i++)
        {
            char ch = str[i];
     
            // extracting each word
            if (ch != ' ')
                word = word + ch;
            else {
                length = word.Length;
                if (checkPalin(word) &&
                        length > length1)
                {
                    length1 = length;
                    longestword = word;
                }
     
                word = "";
            }
        }
     
        return longestword;
    }
     
    // Driver code
    public static void Main()
    {
        string s = "My name is ava and i"
           + " love Geeksforgeeks";
     
        if (longestPalin(s) == "")
            Console.Write("No Palindrome Word");
        else
            Console.Write(longestPalin(s));
    }
}
 
// This code is contributed by Manish
// Shaw (manishshaw1)

Output: 
ava

 

Time complexity : O(n^2)

Space complexity : O(n)

Method #2:Using sorted() method in Python:

Below is the implementation of the above approach.:




// C++ program for the above approach
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
bool isPalindrome(string s) {
    return s == string(s.rbegin(), s.rend());
}
 
void largestPalin(vector<string> s) {
   
    // Taking new list
    vector<string> newlist;
 
    // Traverse the list
    for (string word : s) {
        if (isPalindrome(word)) {
            newlist.push_back(word);
        }
    }
 
    // Using sorted() method
    sort(newlist.begin(), newlist.end(), [](string a, string b) { return a.size() < b.size(); });
 
    // Print last word
    cout << newlist.back() << endl;
}
 
// Driver Code
int main() {
   
    // Given string
    string str = "My name is ava and i love Geeksforgeeks";
    vector<string> words;
    string word;
 
    for (char c : str) {
        if (c == ' ') {
            words.push_back(word);
            word.clear();
        } else {
            word += c;
        }
    }
 
    if (!word.empty()) {
        words.push_back(word);
    }
 
    largestPalin(words);
 
    return 0;
}
 
// This code is contributed by Prajwal Kandekar




import java.util.ArrayList;
import java.util.Collections;
 
public class Main {
    // Function to check if a string is a palindrome
    public static boolean isPalindrome(String s)
    {
        return s.equals(
            new StringBuilder(s).reverse().toString());
    }
 
    // Function to find the largest palindrome in a list of
    // words
    public static void largestPalin(ArrayList<String> s)
    {
        // Create a new list to store all the palindromes
        // found
        ArrayList<String> newlist = new ArrayList<>();
 
        // Iterate over each word in the input list
        for (String word : s) {
            // Check if the current word is a palindrome
            if (isPalindrome(word)) {
                // If it is, add it to the new list
                newlist.add(word);
            }
        }
 
        // Sort the new list in ascending order of length
        Collections.sort(newlist,
                         (a, b) -> a.length() - b.length());
 
        // Print the largest palindrome (last element in the
        // sorted list)
        System.out.println(newlist.get(newlist.size() - 1));
    }
 
    public static void main(String[] args)
    {
        // Input string to be processed
        String str
            = "My name is ava and i love Geeksforgeeks";
        // Create a list to store all the words in the input
        // string
        ArrayList<String> words = new ArrayList<>();
        // Create a string builder to build each word from
        // the input string
        StringBuilder word = new StringBuilder();
 
        // Iterate over each character in the input string
        for (char c : str.toCharArray()) {
            // If the current character is a space, the
            // current word is complete
            if (c == ' ') {
                // Add the current word to the list of words
                words.add(word.toString());
                // Reset the string builder to build the
                // next word
                word.setLength(0);
            }
            else {
                // Otherwise, append the current character
                // to the current word
                word.append(c);
            }
        }
 
        // If there is a word left in the string builder,
        // add it to the list of words
        if (word.length() > 0) {
            words.add(word.toString());
        }
 
        // Find the largest palindrome in the list of words
        largestPalin(words);
    }
}




# Python3 program for the above approach
def ispalindrome(string):
    if(string == string[::-1]):
        return True
    else:
        return False
 
def largestPalin(s):
   
    # Taking new list
    newlist = []
     
    # Traverse the list
    for i in s:
        if(ispalindrome(i)):
            newlist.append(i)
             
    # Using sorted() method
    s = sorted(newlist, key=len)
 
    # Print last word
    print(s[len(s)-1])
 
 
# Driver Code
if __name__ == "__main__":
 
    # Given string
    s = "My name is ava and i love Geeksforgeeks"
 
    # Convert string to list
    l = list(s.split(" "))
 
    largestPalin(l)
     
# This code is contributed by vikkycirus




<script>
 
// JavaScript program for the above approach
function ispalindrome(string){
    let temp = string
    temp = temp.split('').reverse().join('')
    if(string == temp)
        return true
    else
        return false
}
 
function largestPalin(s){
 
    // Taking new list
    let newlist = []
     
    // Traverse the list
    for(let i of s){
        if(ispalindrome(i))
            newlist.push(i)
    }
             
    // Using sorted() method
    newlist.sort((a,b)=>a.length - b.length)
    s = newlist
 
    // Print last word
    document.write(s[s.length-1],"</br>")
}
 
 
// Driver Code
 
// Given string
let s = "My name is ava and i love Geeksforgeeks"
 
// Convert string to list
let l = s.split(" ")
 
largestPalin(l)
     
// This code is contributed by shinjanpatra
 
</script>




// C# program for the above approach
using System;
using System.Collections.Generic;
using System.Linq;
 
public class Program {
  // Function to check if a string is a palindrome
  public static bool IsPalindrome(string s) {
    return s.Equals(new string(s.Reverse().ToArray()));
  }
  // Function to find the largest palindrome in a list of
  // words
  public static void LargestPalin(List < string > s) {
    // Create a new list to store all the palindromes
    // found
    List < string > newList = new List < string > ();
 
    // Iterate over each word in the input list
    foreach(string word in s) {
      // Check if the current word is a palindrome
      if (IsPalindrome(word)) {
        // If it is, add it to the new list
        newList.Add(word);
      }
    }
 
    // Sort the new list in ascending order of length
    newList.Sort((a, b) => a.Length - b.Length);
 
    // Print the largest palindrome (last element in the
    // sorted list)
    Console.WriteLine(newList[newList.Count - 1]);
  }
 
  public static void Main(string[] args) {
    // Input string to be processed
    string str = "My name is ava and i love Geeksforgeeks";
    // Create a list to store all the words in the input
    // string
    List < string > words = new List < string > ();
    // Create a string builder to build each word from
    // the input string
    System.Text.StringBuilder word = new System.Text.StringBuilder();
 
    // Iterate over each character in the input string
    foreach(char c in str) {
      // If the current character is a space, the
      // current word is complete
      if (c == ' ') {
        // Add the current word to the list of words
        words.Add(word.ToString());
        // Reset the string builder to build the
        // next word
        word.Clear();
      } else {
        // Otherwise, append the current character
        // to the current word
        word.Append(c);
      }
    }
 
    // If there is a word left in the string builder,
    // add it to the list of words
    if (word.Length > 0) {
      words.Add(word.ToString());
    }
 
    // Find the largest palindrome in the list of words
    LargestPalin(words);
  }
}
// Contributed by adityasharmadev01

Output:

ava

Method #3:Using filter() method in Python:




#include <algorithm>
#include <iostream>
#include <regex>
#include <string>
 
using namespace std;
 
bool ispalindrome(string word)
{
    return word == string(word.rbegin(), word.rend());
}
 
void largestPalin(string s)
{
    // Convert string to vector of words
    regex pattern(R "(\b\w+\b)");
    vector<string> words(
        sregex_token_iterator(s.begin(), s.end(), pattern),
        sregex_token_iterator());
 
    // Using remove_if() and erase() functions to remove
    // non-palindrome words
    words.erase(remove_if(words.begin(), words.end(),
                          [](string word) {
                              return !ispalindrome(word);
                          }),
                words.end());
 
    // Using max_element() function to find the word with
    // the maximum length
    auto it = max_element(
        words.begin(), words.end(), [](string a, string b) {
            return a.length() < b.length();
        });
 
    // Printing the largest palindrome
    cout << *it << endl;
}
 
int main()
{
    string s = "My name is ava and i love Geeksforgeeks";
    largestPalin(s);
    return 0;
}




// Java program for the above approach
import java.util.ArrayList;
import java.util.List;
 
public class Main {
    public static boolean isPalindrome(String word)
    {
        return word.equals(
            new StringBuilder(word).reverse().toString());
    }
 
    public static void largestPalin(String s)
    {
        // Convert string to list of words
        String[] words = s.split("\\W+");
        List<String> palindromeWords = new ArrayList<>();
        // Using filter() function to filter palindrome
        // words
        for (String word : words) {
            if (isPalindrome(word)) {
                palindromeWords.add(word);
            }
        }
        // Using max() function to find the word with the
        // maximum length
        String largestPalindrome
            = palindromeWords.stream()
                  .max((a, b)
                           -> Integer.compare(a.length(),
                                              b.length()))
                  .orElse(null);
        System.out.println(largestPalindrome);
    }
 
    public static void main(String[] args)
    {
        String s
            = "My name is ava and i love Geeksforgeeks";
        largestPalin(s);
    }
}
// Contributed by adityasha4x71




import re
 
 
def ispalindrome(word):
    return word == word[::-1]
 
 
def largestPalin(s):
    # Convert string to list of words
    words = re.findall(r'\b\w+\b', s)
    # Using filter() function to filter palindrome words
    palindrome_words = filter(ispalindrome, words)
    # Using max() function to find the word with the maximum length
    largest_palindrome = max(palindrome_words, key=len)
    print(largest_palindrome)
 
 
# Driver Code
if __name__ == "__main__":
    s = "My name is ava and i love Geeksforgeeks"
    largestPalin(s)




// JavaScript program for above approach
function isPalindrome(word) {
  return word === word.split('').reverse().join('');
}
 
function largestPalin(s) {
  // Convert string to array of words
  const words = s.match(/\b\w+\b/g);
  // Using filter() method to filter palindrome words
  const palindromeWords = words.filter(isPalindrome);
  // Using reduce() method to find the word with the maximum length
  const largestPalindrome = palindromeWords.reduce((a, b) => a.length >= b.length ? a : b, "");
  console.log(largestPalindrome);
}
 
// Driver Code
const s = "My name is ava and i love Geeksforgeeks";
largestPalin(s);
 
// Contributed by adityasha4x71




using System;
using System.Linq;
 
class Program {
    static bool IsPalindrome(string word)
    {
        return word.SequenceEqual(word.Reverse());
    }
 
    static string LargestPalin(string s)
    {
        // Convert string to array of words
        var words = s.Split(
            new char[] { ' ' },
            StringSplitOptions.RemoveEmptyEntries);
        // Using LINQ to filter palindrome words
        var palindromeWords = words.Where(IsPalindrome);
        // Using LINQ to find the word with the maximum
        // length
        var largestPalindrome
            = palindromeWords
                  .OrderByDescending(word = > word.Length)
                  .FirstOrDefault();
        return largestPalindrome;
    }
 
    static void Main(string[] args)
    {
        string s
            = "My name is ava and i love Geeksforgeeks";
        string largestPalindrome = LargestPalin(s);
        Console.WriteLine(largestPalindrome);
    }
}

Output
ava

Time complexity:O(n)
Auxiliary Space:O(n) 


Article Tags :