在句子中打印最长的回文词
给定一个字符串str ,任务是打印字符串str中存在的最长回文词。
例子:
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.
方法:
- 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