Welcome to Subscribe On Youtube
2609. Find the Longest Balanced Substring of a Binary String
Description
You are given a binary string s
consisting only of zeroes and ones.
A substring of s
is considered balanced if all zeroes are before ones and the number of zeroes is equal to the number of ones inside the substring. Notice that the empty substring is considered a balanced substring.
Return the length of the longest balanced substring of s
.
A substring is a contiguous sequence of characters within a string.
Example 1:
Input: s = "01000111" Output: 6 Explanation: The longest balanced substring is "000111", which has length 6.
Example 2:
Input: s = "00111" Output: 4 Explanation: The longest balanced substring is "0011", which has length 4.
Example 3:
Input: s = "111" Output: 0 Explanation: There is no balanced substring except the empty substring, so the answer is 0.
Constraints:
1 <= s.length <= 50
'0' <= s[i] <= '1'
Solutions
-
class Solution { public int findTheLongestBalancedSubstring(String s) { int zero = 0, one = 0; int ans = 0, n = s.length(); for (int i = 0; i < n; ++i) { if (s.charAt(i) == '0') { if (one > 0) { zero = 0; one = 0; } ++zero; } else { ans = Math.max(ans, 2 * Math.min(zero, ++one)); } } return ans; } }
-
class Solution { public: int findTheLongestBalancedSubstring(string s) { int zero = 0, one = 0; int ans = 0; for (char& c : s) { if (c == '0') { if (one > 0) { zero = 0; one = 0; } ++zero; } else { ans = max(ans, 2 * min(zero, ++one)); } } return ans; } };
-
class Solution: def findTheLongestBalancedSubstring(self, s: str) -> int: ans = zero = one = 0 for c in s: if c == '0': if one: zero = one = 0 zero += 1 else: one += 1 ans = max(ans, 2 * min(one, zero)) return ans
-
func findTheLongestBalancedSubstring(s string) (ans int) { zero, one := 0, 0 for _, c := range s { if c == '0' { if one > 0 { zero, one = 0, 0 } zero++ } else { one++ ans = max(ans, 2*min(zero, one)) } } return } func max(a, b int) int { if a > b { return a } return b } func min(a, b int) int { if a < b { return a } return b }
-
function findTheLongestBalancedSubstring(s: string): number { let zero = 0; let one = 0; let ans = 0; for (const c of s) { if (c === '0') { if (one > 0) { zero = 0; one = 0; } ++zero; } else { ans = Math.max(ans, 2 * Math.min(zero, ++one)); } } return ans; }
-
impl Solution { pub fn find_the_longest_balanced_substring(s: String) -> i32 { let mut zero = 0; let mut one = 0; let mut ans = 0; for &c in s.as_bytes().iter() { if c == b'0' { if one > 0 { zero = 0; one = 0; } zero += 1; } else { one += 1; ans = std::cmp::max(ans, std::cmp::min(zero, one) * 2) } } ans } }