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

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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)

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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.