Skip to main content

Binary String

Problem​

Given a binary string S. The task is to count the number of substrings that start and end with 1. For example, if the input string is β€œ00100101”, then there are three substrings β€œ1001”, β€œ100101” and β€œ101”.

Examples:​

Example 1:

Input:
N = 4
S = 1111
Output: 6
Explanation: There are 6 substrings from the given string. They are 11, 11, 11, 111, 111, 1111.

Example 2:

Input:
N = 5
S = 01101
Output: 3
Explanation: There 3 substrings from the given string. They are 11, 101, 1101.

Your task:​

The task is to complete the function binarySubstring() which takes the length of binary string n and a binary string a as input parameter and counts the number of substrings starting and ending with 1 and returns the count.

  • Expected Time Complexity: O(N)O(N)
  • Expected Auxiliary Space: O(1)O(1)

Constraints:​

  • 1β‰€βˆ£Sβˆ£β‰€1041 ≀ |S| ≀ 10^4

Solution​

Python​

def binarySubstring(self,n,s):
m = 0
for i in range(0, n):
if (s[i] == '1'):
m = m + 1
return m * (m - 1) // 2

Java​

public static int binarySubstring(int a, String str) {
int m = 0;
for (int i = 0; i < a; i++) {
if (str.charAt(i) == '1') {
m = m + 1;
}
}
return m * (m - 1) / 2;
}

C++​

long binarySubstring(int n, string a){
int m = 0;
for (int i = 0; i < n; i++) {
if (a[i] == '1') {
m = m + 1;
}
}
return m * (m - 1) / 2;
}

C​

long binarySubstring(int n, const char *a) {
int m = 0;
for (int i = 0; i < n; i++) {
if (a[i] == '1') {
m = m + 1;
}
}
return (long)m * (m - 1) / 2;
}
  • Time Complexity: O(N)O(N)
  • Auxiliary Space: O(1)O(1)