本文概述
- C ++
- Java
- Python3
- C#
- 的PHP
例子:
Input : str = "daiict"
Output : 3
dai, ict are longest substring that do not contain any
palindrome as substringInput : str = "a"
Output : 0
a is itself a palindrome
这样做的目的是观察如果任何字符形成回文, 则不能将其包含在任何子字符串中。因此, 在这种情况下, 将从构成回文的字符之前或之后选择所需的子字符串。
因此, 一种简单的解决方案是遍历字符串, 并针对每个字符检查其与相邻字符是否形成长度为2或3的回文。如果, 则不增加子字符串的长度, 否则将子字符串的长度重新初始化为零。使用这种方法可以找到最大子串的长度。
【不含回文的最长子字符串的长度】下面是上述方法的实现:
C ++
//C++ implementation of the above approach#include <
bits/stdc++.h>
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 , 0for 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
<
?php
//PHP implementation of the above approach //Function to find the length of the longest
//substring
function lenoflongestnonpalindrome( $s )
{
//initializing the variables
$max1 = 1;
$len = 0;
for ( $i = 0;
$i <
strlen ( $s ) - 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
$s = "synapse" ;
echo lenoflongestnonpalindrome( $s ), "\n" ;
//This code is contributed by AnkitRai01?>
输出如下:
7
推荐阅读
- 密码学中的轻松密钥管理介绍
- 使用Fenwick树在L到R范围内大于K的元素数(离线查询)
- Android自动化测试环境部署
- idea 导入 android项目
- Android蓝牙通讯
- Android商城开发系列(十三)—— 首页热卖商品布局实现
- Android商城开发系列—— 首页推荐布局实现
- Android 中基于 Binder的进程间通信
- Android实际开发之网络请求组件的封装(OkHttp为核心)