📜  在句子中打印最长的回文词

📅  最后修改于: 2022-05-13 01:57:07.035000             🧑  作者: Mango

在句子中打印最长的回文词

给定一个字符串str ,任务是打印字符串str中存在的最长回文词。
例子:

方法:

  • longPalin()函数通过提取字符串中的每个单词并将其传递给 checkPalin()函数来找到最长的回文单词。在原始字符串中添加一个额外的空格以提取最后一个单词。
  • checkPalin()函数检查单词是否为回文。如果单词是回文则返回真,否则返回假。它确保空字符串不计为回文,因为用户可能在字符串之间或开头输入多个空格。
C++
/* C++ program to print longest palindrome
word in a sentence and its length*/
#include 
#include 
#include 
 
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<


Java
/*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));
    }
}


Python3
# 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


C#
/* 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)


Javascript


Python3
# 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


输出:
ava

方法 #2:在Python中使用sorted()方法:

  • 这个想法是将字符串中的单词拆分成一个列表。
  • 遍历列表并将所有回文词追加到新列表中
  • 使用 sorted() 方法按单词长度的递增顺序对新列表进行排序。
  • 最后,打印列表中的最后一个字符串。

下面是上述方法的实现:

Python3

# 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

输出:

ava