def min_operations(s): n = len(s) # 各位置での累積差分(00の数 - 11の数) balance = [0] * (n + 1) for i in range(1, n): balance[i] = balance[i-1] if s[i-1:i+1] == "00": balance[i] += 1 elif s[i-1:i+1] == "11": balance[i] -= 1 # 最大のアンバランスを求める min_balance = 0 result = 0 for b in balance: result = max(result, b - min_balance) min_balance = min(min_balance, b) return result