# Length of the longest substring that do not contain any palindrome

• Difficulty Level : Medium
• Last Updated : 21 May, 2021

Given a string of lowercase, find the length of the longest substring that does not contain any palindrome as a substring.

Examples:

```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 ```

The idea is to observe that if any character forms a palindrome, it can not be included in any substring. So, in that case, the required substring will be picked from before or after that character which forms a palindrome.
Therefore, a simple solution is to traverse the string and, for each character, check whether it forms a palindrome of length 2 or 3 with its adjacent characters. If it does not, then increase the length of the substring, otherwise re-initialize the length of the substring to zero. Using this approach, find the length of the maximum substring.

Below is the implementation of the above approach:

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

 ``
Output:
`7`

My Personal Notes arrow_drop_up