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<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
filter_none
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)); } } |
chevron_right
filter_none
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 |
chevron_right
filter_none
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) |
chevron_right
filter_none
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 ?> |
chevron_right
filter_none
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.