不包含任何回文的最长子串的长度
给定字符串小写字母,找出不包含任何回文的最长子串的长度作为子串。
例子:
Input : str = "daiict"
Output : 3
dai, ict are longest substring that do not contain any
palindrome as substring
Input : str = "a"
Output : 0
a is itself a palindrome
这个想法是观察如果任何字符形成回文,它就不能包含在任何子字符串中。因此,在这种情况下,将从形成回文的那个字符之前或之后挑选所需的子字符串。
因此,一个简单的解决方案是遍历字符串,并且对于每个字符,检查它是否与其相邻字符形成长度为 2 或 3 的回文。如果不是,则增加子字符串的长度,否则将子字符串的长度重新初始化为零。使用这种方法,找到最大子字符串的长度。
下面是上述方法的实现:
C++
// C++ implementation of the above approach
#include
using namespace std;
// Function to find the length of the longest
// substring
int lenoflongestnonpalindrome(string s)
{
// initializing the variables
int max1 = 1, len = 0;
for (int i = 0; i < s.length() - 1; i++) {
// checking palindrome of size 2
// example: aa
if (s[i] == s[i + 1])
len = 0;
// checking palindrome of size 3
// example: aba
else if (s[i + 1] == s[i - 1] && i > 0)
len = 1;
else // incrementing length of substring
len++;
max1 = max(max1, len + 1); // finding maximum
}
// if there exits single character then
// it is always palindrome
if (max1 == 1)
return 0;
else
return max1;
}
// Driver Code
int main()
{
string s = "synapse";
cout << lenoflongestnonpalindrome(s) << "\n";
return 0;
}
Java
// Java implementation of the above approach
import java.util.Arrays;
import java.lang.Math;
class GFG {
// Function to find the length of the longest
// substring
public static int lenoflongestnonpalindrome(String s)
{
// initializing the variables
int max1 = 1, len = 0;
char[] new_str = s.toCharArray();
for (int i = 0; i < new_str.length - 1; i++) {
// checking palindrome of size 2
// example: aa
if (new_str[i] == new_str[i + 1])
len = 0;
// checking palindrome of size 3
// example: aba
else if (i > 0 && (new_str[i + 1] == new_str[i - 1]))
len = 1;
else // incrementing length of substring
len++;
max1 = Math.max(max1, len + 1); // finding maximum
}
// if there exits single character then
// it is always palindrome
if (max1 == 1)
return 0;
else
return max1;
}
// Driver Code
public static void main(String[] args)
{
String s = "synapse";
System.out.println(lenoflongestnonpalindrome(s));
}
}
// This code is contributed by princiraj1992
Python3
# Python3 implementation of the above approach
# Function to find the length
# of the longest substring
def lenoflongestnonpalindrome(s):
# initializing the variables
max1, length = 1, 0
for i in range(0, len(s) - 1):
# checking palindrome of
# size 2 example: aa
if s[i] == s[i + 1]:
length = 0
# checking palindrome of
# size 3 example: aba
elif s[i + 1] == s[i - 1] and i > 0:
length = 1
else: # incrementing length of substring
length += 1
max1 = max(max1, length + 1) # finding maximum
# If there exits single character
# then it is always palindrome
if max1 == 1:
return 0
else:
return max1
# Driver Code
if __name__ == "__main__":
s = "synapse"
print(lenoflongestnonpalindrome(s))
# This code is contributed by Rituraj Jain
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to find the length of the longest
// substring
public static int lenoflongestnonpalindrome(String s)
{
// initializing the variables
int max1 = 1, len = 0;
char[] new_str = s.ToCharArray();
for (int i = 0; i < new_str.Length - 1; i++)
{
// checking palindrome of size 2
// example: aa
if (new_str[i] == new_str[i + 1])
len = 0;
// checking palindrome of size 3
// example: aba
else if (i > 0 && (new_str[i + 1] == new_str[i - 1]))
len = 1;
else // incrementing length of substring
len++;
max1 = Math.Max(max1, len + 1); // finding maximum
}
// if there exits single character then
// it is always palindrome
if (max1 == 1)
return 0;
else
return max1;
}
// Driver Code
public static void Main(String[] args)
{
String s = "synapse";
Console.WriteLine(lenoflongestnonpalindrome(s));
}
}
// This code has been contributed by 29AjayKumar
PHP
0)
$len = 1;
else // incrementing length of substring
$len++;
$max1 = max($max1, $len + 1); // finding maximum
}
// if there exits single character then
// it is always palindrome
if ($max1 == 1)
return 0;
else
return $max1;
}
// Driver Code
$s = "synapse";
echo lenoflongestnonpalindrome($s), "\n";
// This code is contributed by AnkitRai01
?>
Javascript
输出:
7