Skip to content
Related Articles

Related Articles

Maximum power of jump required to reach the end of string
  • Difficulty Level : Medium
  • Last Updated : 15 Oct, 2019

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<bits/stdc++.h>
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<<powerOfJump(st);
      
}
// This code is contributed by ash264


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




<?php
// PHP programme to calculate
// power of jump 
  
// Function to calculate the 
// maximum power of the jump 
function powerOfJump($s
    // Initialize the count with 1 
    $count = 1; 
    $max_so_far = PHP_INT_MIN; 
      
    // Find the character at last index 
    $ch = $s[strlen($s) - 1]; 
      
    // Start traversing the string 
    for ($i = 0; 
         $i < strlen($s); $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 
$st = "1010101"
echo powerOfJump($st); 
      
// This code is contributed by ajit
?>


Output:

2

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :