Related Articles
Length of the longest substring that do not contain any palindrome
• Difficulty Level : Medium
• Last Updated : 20 May, 2019

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is to observe that if any character forms a palindrome, it can not be included in any substring. So, in that case 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, does not then increase the length of 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`` ` `?>`
Output:
```7
```

My Personal Notes arrow_drop_up