Maximum power of jump required to reach the end of string

Given a string consisting of 1 and 0, the task is to find out the maximum power of jump required to reach the end of the string. At a time you can jump from one 1 to next 1 or from one 0 to next 0.
Note: Power of jump is defined as the distance between two consecutive 1’s or two consecutive 0’s.

Examples:

Input: 10101
Output: 2
First, make a power jump of 1 to reach first 1,
then a power jump of 2 to reach second 1
and then finally a power jump of 2
to reach the end of the string
hence the maximum power of jump is 2.

Input: 11110
Output: 5
Since to reach the end of the string, we have to make
power jump of 5 to reach 0 and end of the string Approach:

• Check if the last character of given string is 1 or 0.
• If the last character is 1 then search for the first 1 in the string and continue to jump to the next 1 to reach the last of the string. Update the maximum jumps.
• Similarly, if the last character is 0 then search for the first 0 in the string and continue to jump to the next 0 to reach the last of the string. Update the maximum jumps.
• Return the maximum number of jumps taken to reach the end.

C++

 // C++ programme to calculate power of jump #include using namespace std;    // Function to calculate the maximum power of the jump int powerOfJump(string s) {     // Initialize the count with 1     int count = 1;     int max_so_far = INT_MIN;            // Find the character at last index     char ch = s[s.length() - 1];            // Start traversing the string     for (int i = 0; i < s.length(); i++)      {         // Check if the current char is equal         // to the last character         if (s[i] == ch)          {             // max_so_far stores maximum value of             // the power of the jump from starting             // to ith position             if (count > max_so_far) {                 max_so_far = count;                                }             // Reset the count to 1             count = 1;                        }         // Else, increment the number of jumps/count         else         count++;                }     // Return the maximum number of jumps     return max_so_far;        }    // Driver code int main(){     string st = "1010101";     cout<

Java

 // java programme to calculate power of jump import java.util.ArrayList;    public class string_sort {        // Function to calculate the maximum power of the jump     public static int powerOfJump(String s)     {         // Initialize the count with 1         int count = 1;         int max_so_far = Integer.MIN_VALUE;            // Find the character at last index         char ch = s.charAt(s.length() - 1);            // Start traversing the string         for (int i = 0; i < s.length(); i++) {               // Check if the current char is equal            // to the last character             if (s.charAt(i) == ch) {                    // max_so_far stores maximum value of                 // the power of the jump from starting                 // to ith position                 if (count > max_so_far) {                     max_so_far = count;                 }                                    // Reset the count to 1                 count = 1;             }                // Else, increment the number of jumps/count             else                 count++;         }            // Return the maximum number of jumps         return max_so_far;     }     // Driver code     public static void main(String[] args)     {         String st = "1010101";         System.out.println(powerOfJump(st));     } }

Python3

 # Python3 programme to calculate  # power of jump     # Function to calculate the maximum  # power of the jump  def powerOfJump(s):         # Initialize the count with 1      count = 1     max_so_far = 0            # Find the character at last index      ch = s[-1]             # Start traversing the string      for i in range(0, len(s)):                 # Check if the current char is          # equal to the last character          if s[i] == ch:                        # max_so_far stores maximum value of              # the power of the jump from starting              # to ith position              if count > max_so_far:                  max_so_far = count                             # Reset the count to 1              count = 1                    # Else, increment the number          # of jumps/count          else:             count += 1            # Return the maximum number of jumps      return max_so_far     # Driver Code if __name__ == "__main__":        st = "1010101"     print(powerOfJump(st))         # This code is contributed  # by Rituraj Jain

C#

 // C# programme to calculate  // power of jump using System;    class GFG {    // Function to calculate the // maximum power of the jump public static int powerOfJump(String s) {     // Initialize the count with 1     int count = 1;     int max_so_far = int.MinValue;        // Find the character at last index     char ch = s[s.Length - 1];        // Start traversing the string     for (int i = 0; i < s.Length; i++)      {        // Check if the current char is     // equal to the last character         if (s[i] == ch)          {                // max_so_far stores maximum value              // of the power of the jump from              // starting to ith position             if (count > max_so_far)              {                 max_so_far = count;             }                            // Reset the count to 1             count = 1;         }            // Else, increment the number         // of jumps/count         else             count++;     }        // Return the maximum number of jumps     return max_so_far; }    // Driver code public static void Main() {     String st = "1010101";     Console.WriteLine(powerOfJump(st)); } }    // This code is contributed  // by Akanksha Rai(Abby_akku)

PHP

 \$max_so_far)             {                  \$max_so_far = \$count;                 }                             // Reset the count to 1              \$count = 1;                         }                     // Else, increment the number          // of jumps/count          else         \$count++;      }             // Return the maximum number      // of jumps      return \$max_so_far;  }     // Driver code  \$st = "1010101";  echo powerOfJump(\$st);         // This code is contributed by ajit ?>

Output:

2

Time Compexity : O(n) where n is the length of the string

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.