从给定句子中删除所有回文词
给定一个句子str 。问题是从给定句子中删除所有回文词。
例子:
Input : str = "Text contains malayalam and level words"
Output : Text contains and words
Input : str = "abc bcd"
Output : abc bcd
方法:将所有单词一一提取。检查当前单词是否不是回文,然后将其添加到最终字符串中。
算法:
removePalinWords(str, n)
Initialize final_str = "", word = ""
str = str + " "
for i = 0 to n-1
if str[i] != ' ', then
word = word + str[i]
else
if (!(isPalindrome(word)), then
final_str += word + " "
word = ""
return final_str
isPalindrome()函数用于检查给定字符串是否为回文。参考这篇文章。
C++
// C++ implementation to remove all the
// palindromic words from the given sentence
#include
using namespace std;
// function to check if 'str' is palindrome
bool isPalindrome(string str) {
int i = 0, j = str.size() - 1;
// traversing from both the ends
while (i < j)
// not palindrome
if (str[i++] != str[j--])
return false;
// palindrome
return true;
}
// function to remove all the palindromic words
// from the given sentence
string removePalinWords(string str) {
// 'final_str' to store the final string and
// 'word' to one by one store each word of 'str'
string final_str = "", word = "";
// add space at the end of 'str'
str = str + " ";
int n = str.size();
// traversing 'str'
for (int i = 0; i < n; i++) {
// accumulating characters of the current word
if (str[i] != ' ')
word = word + str[i];
else {
// if 'word' is not palindrome then a
// add it to 'final_str'
if (!(isPalindrome(word)))
final_str += word + " ";
// reset
word = "";
}
}
// required final string
return final_str;
}
// Driver program to test above
int main() {
string str = "Text contains malayalam and level words";
cout << removePalinWords(str);
return 0;
}
Java
// Java implementation to remove all the
// palindromic words from the given sentence
class GFG
{
// function to check if 'str' is palindrome
static boolean isPalindrome(String str)
{
int i = 0, j = str.length() - 1;
// traversing from both the ends
while (i < j)
{
// not palindrome
if (str.charAt(i++) != str.charAt(j--))
return false;
}
// palindrome
return true;
}
// function to remove all the palindromic words
// from the given sentence
static String removePalinWords(String str)
{
// 'final_str' to store the final string and
// 'word' to one by one store each word of 'str'
String final_str = "", word = "";
// add space at the end of 'str'
str = str + " ";
int n = str.length();
// traversing 'str'
for (int i = 0; i < n; i++)
{
// accumulating characters of the current word
if (str.charAt(i) != ' ')
word = word + str.charAt(i);
else
{
// if 'word' is not palindrome then a
// add it to 'final_str'
if (!(isPalindrome(word)))
final_str += word + " ";
// reset
word = "";
}
}
// required final string
return final_str;
}
// Driver code
public static void main (String[] args)
{
String str = "Text contains malayalam and level words";
System.out.print(removePalinWords(str));
}
}
// This code is contributed by Anant Agarwal.
Python3
# Python3 implementation to remove all the
# palindromic words from the given sentence
# function to check if 'str' is palindrome
def isPalindrome(string) :
i = 0; j = len(string) - 1;
# traversing from both the ends
while (i < j) :
# not palindrome
if (string[i] != string[j]) :
return False;
i += 1;
j -= 1;
# palindrome
return True;
# function to remove all the palindromic words
# from the given sentence
def removePalinWords(string) :
# 'final_str' to store the final string and
# 'word' to one by one store each word of 'str'
final_str = ""; word = "";
# add space at the end of 'str'
string = string + " ";
n = len(string);
# traversing 'str'
for i in range(n) :
# accumulating characters of the current word
if (string[i] != ' ') :
word = word + string[i];
else :
# if 'word' is not palindrome then a
# add it to 'final_str'
if (not (isPalindrome(word))) :
final_str += word + " ";
# reset
word = "";
# required final string
return final_str;
# Driver Code
if __name__ == "__main__" :
string = "Text contains malayalam and level words";
print(removePalinWords(string));
# This code is contributed by AnkitRai01
C#
// C# implementation to remove all the
// palindromic words from the given sentence
using System;
class GFG {
// function to check if 'str' is
// palindrome
static bool isPalindrome(string str)
{
int i = 0, j = str.Length - 1;
// traversing from both the ends
while (i < j)
{
// not palindrome
if (str[i++] != str[j--])
return false;
}
// palindrome
return true;
}
// function to remove all the
// palindromic words from the
// given sentence
static String removePalinWords(string str)
{
// 'final_str' to store the final
// string and 'word' to one by one
// store each word of 'str'
string final_str = "", word = "";
// add space at the end of 'str'
str = str + " ";
int n = str.Length;
// traversing 'str'
for (int i = 0; i < n; i++)
{
// accumulating characters of
// the current word
if (str[i] != ' ')
word = word + str[i];
else
{
// if 'word' is not palindrome
// then a add it to 'final_str'
if (!(isPalindrome(word)))
final_str += word + " ";
// reset
word = "";
}
}
// required final string
return final_str;
}
// Driver code
public static void Main ()
{
string str = "Text contains malayalam "
+ "and level words";
Console.WriteLine(removePalinWords(str));
}
}
// This code is contributed by vt_m.
Javascript
Python3
# Python program for the above approach
# Function which returns last word
def removePalindrome(string):
# Split by space and converting
# String to list and
lis = list(string.split(" "))
# length of list
length = len(lis)
# Taking new list
newlis = []
# loop till length of list
for i in range(length):
# check if the word is palindrome
if(lis[i] != lis[i][::-1]):
newlis.append(lis[i])
return newlis
# Driver code
string = "Text contains malayalam and level words"
print(*removePalindrome(string))
输出
Text contains and words
时间复杂度: O(n)。
方法2:使用内置Python函数:
- 因为句子中的所有单词都用空格分隔。
- 我们必须使用split() 将句子按空格分隔。
- 我们用空格分割所有单词并将它们存储在一个列表中。
- 循环直到列表中的单词数。
- 获取一个新列表并附加非回文单词。
- 打印新列表。
下面是实现
Python3
# Python program for the above approach
# Function which returns last word
def removePalindrome(string):
# Split by space and converting
# String to list and
lis = list(string.split(" "))
# length of list
length = len(lis)
# Taking new list
newlis = []
# loop till length of list
for i in range(length):
# check if the word is palindrome
if(lis[i] != lis[i][::-1]):
newlis.append(lis[i])
return newlis
# Driver code
string = "Text contains malayalam and level words"
print(*removePalindrome(string))
输出
Text contains and words
时间复杂度: O(N)