Related Articles
Length of the longest substring with no consecutive same letters
• Difficulty Level : Medium
• Last Updated : 14 May, 2021

Given a string str, the task is to find the length of the longest sub-string which does not have any pair of consecutive same characters.
Examples:

Input: str = “abcdde”
Output:
“abcd” is the longest
Input: str = “ccccdeededff”
Output:
“ededf” is the longest

Approach: The following steps can be followed to solve the above problem:

• Initialize cnt and maxi as 1 initially, since this is the minimum answer of the length of the longest answer.
• Iterate in the string from 1 to n – 1 and increment cnt by 1 if str[i] != str[i – 1].
• If str[i] == str[i – 1], then re-initialize cnt as 1 and maxi to max(maxi, cnt).

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the length``// of the required sub-string``int` `longestSubstring(string s)``{``    ``int` `cnt = 1;``    ``int` `maxi = 1;` `    ``// Get the length of the string``    ``int` `n = s.length();` `    ``// Iterate in the string``    ``for` `(``int` `i = 1; i < n; i++) {` `        ``// Check for not consecutive``        ``if` `(s[i] != s[i - 1])``            ``cnt++;``        ``else` `{` `            ``// If cnt greater than maxi``            ``maxi = max(cnt, maxi);` `            ``// Re-initialize``            ``cnt = 1;``        ``}``    ``}` `    ``// Check after iteration``    ``// is complete``    ``maxi = max(cnt, maxi);` `    ``return` `maxi;``}` `// Driver code``int` `main()``{``    ``string s = ``"ccccdeededff"``;``    ``cout << longestSubstring(s);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.lang.Math;` `class` `GfG``{` `    ``// Function to return the length``    ``// of the required sub-string``    ``static` `int` `longestSubstring(String s)``    ``{``        ``int` `cnt = ``1``, maxi = ``1``;``    ` `        ``// Get the length of the string``        ``int` `n = s.length();``    ` `        ``// Iterate in the string``        ``for` `(``int` `i = ``1``; i < n; i++)``        ``{``    ` `            ``// Check for not consecutive``            ``if` `(s.charAt(i) != s.charAt(i-``1``))``                ``cnt++;``            ``else``            ``{``    ` `                ``// If cnt greater than maxi``                ``maxi = Math.max(cnt, maxi);``    ` `                ``// Re-initialize``                ``cnt = ``1``;``            ``}``        ``}``    ` `        ``// Check after iteration is complete``        ``maxi = Math.max(cnt, maxi);``    ` `        ``return` `maxi;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String []args)``    ``{``        ` `        ``String s = ``"ccccdeededff"``;``        ``System.out.println(longestSubstring(s));``    ``}``}` `// This code is contributed by Rituraj Jain`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GfG``{` `    ``// Function to return the length``    ``// of the required sub-string``    ``static` `int` `longestSubstring(``string` `s)``    ``{``        ``int` `cnt = 1, maxi = 1;``    ` `        ``// Get the length of the string``        ``int` `n = s.Length;``    ` `        ``// Iterate in the string``        ``for` `(``int` `i = 1; i < n; i++)``        ``{``    ` `            ``// Check for not consecutive``            ``if` `(s[i] != s[i - 1])``                ``cnt++;``            ``else``            ``{``    ` `                ``// If cnt greater than maxi``                ``maxi = Math.Max(cnt, maxi);``    ` `                ``// Re-initialize``                ``cnt = 1;``            ``}``        ``}``    ` `        ``// Check after iteration is complete``        ``maxi = Math.Max(cnt, maxi);``    ` `        ``return` `maxi;``    ``}` `    ``// Driver code``    ``static` `void` `Main()``    ``{``        ` `        ``string` `s = ``"ccccdeededff"``;``        ``Console.WriteLine(longestSubstring(s));``    ``}``}` `// This code is contributed by mits`

## Python3

 `# Python3 implementation of the approach` `# Function to return the length``# of the required sub-string``def` `longestSubstring(s) :` `    ``cnt ``=` `1``;``    ``maxi ``=` `1``;` `    ``# Get the length of the string``    ``n ``=` `len``(s);` `    ``# Iterate in the string``    ``for` `i ``in` `range``(``1``, n) :` `        ``# Check for not consecutive``        ``if` `(s[i] !``=` `s[i ``-` `1``]) :``            ``cnt ``+``=` `1``;``            ` `        ``else` `:``            ` `            ``# If cnt greater than maxi``            ``maxi ``=` `max``(cnt, maxi);` `            ``# Re-initialize``            ``cnt ``=` `1``;` `    ``# Check after iteration``    ``# is complete``    ``maxi ``=` `max``(cnt, maxi);` `    ``return` `maxi;` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:``    ` `    ``s ``=` `"ccccdeededff"``;``    ``print``(longestSubstring(s));``    ` `# This code is contirbuted by Ryuga`

## PHP

 ``

## Javascript

 ``
Output:
`5`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up