w3resource

C++ String Exercises: Longest consecutive ones in a binary string

C++ String: Exercise-25 with Solution

Write a C++ program to find the longest sequence of consecutive ones in a given binary string.

Sample Data:
("1100110001") -> “11”
(“00100111011”) -> “111”
(“00000”) -> “”

Sample Solution-1:

C++ Code:

#include <bits/stdc++.h> // Includes all standard libraries

using namespace std; // Using the standard namespace

std::string test(std::string text) { // Function to find the longest sequence of consecutive ones in a binary string
    int ctr = 0; // Initialize a counter for consecutive ones
    int result = 0; // Initialize a variable to hold the maximum count of consecutive ones

    for (int i = 0; i < text.size(); i++) { // Loop through the characters of the input string
        if (text[i] == '0') // If the current character is '0', reset the counter
            ctr = 0;
        else { // If the current character is '1'
            ctr++; // Increment the consecutive ones counter
            result = std::max(result, ctr); // Update the maximum count of consecutive ones found so far
        }
    }

    std::string result1(result, '1'); // Create a string of '1's with length equal to the maximum count of consecutive ones
    return result1; // Return the string of consecutive ones
}

int main() {
    string text = "1100110001"; // Declare and initialize a binary string
    //string text = "00100111011";
    //string text = "00000";

    cout << "Original Binary String:\n";
    cout << text; // Output the original binary string
    cout << "\n\nLongest sequence of consecutive ones of the said binary string:\n";
    cout << test(text) << endl; // Output the longest sequence of consecutive ones in the string
}

Sample Output:

Original Binary String:
1100110001

Longest sequence of consecutive ones of the said binary string:
11

Flowchart:

Flowchart: Longest consecutive ones in a binary string.

Sample Solution-2:

C++ Code:

#include <bits/stdc++.h> // Includes all standard libraries

using namespace std; // Using the standard namespace

std::string test(std::string text) { // Function to find the longest sequence of consecutive ones in a binary string
    int i = 0; // Initialize a counter variable

    // Loop to find the longest sequence of consecutive ones
    while (text.find(string(i, '1')) != string::npos) // Find the substring of i '1's in the input text
        i++; // Increment the counter to find the longest sequence of consecutive ones

    return string(i - 1, '1'); // Return a string with (i - 1) consecutive '1's as the longest sequence
}

int main() {
    string text = "1100110001"; // Declare and initialize a binary string
    //string text = "00100111011";
    //string text = "00000";

    cout << "Original Binary String:\n";
    cout << text; // Output the original binary string
    cout << "\n\nLongest sequence of consecutive ones of the said binary string:\n";
    cout << test(text) << endl; // Output the longest sequence of consecutive ones in the string
}

Sample Output:

Original Binary String:
1100110001

Longest sequence of consecutive ones of the said binary string:
11

Flowchart:

Flowchart: Longest consecutive ones in a binary string.

C++ Code Editor:

Contribute your code and comments through Disqus.

Previous C++ Exercise: Count number of duplicate characters in a given string.

Next C++ Exercise: Check a string is a title cased string or not.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.