链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
牛妹有一个01{01}01串,串中只包含0{0}0和1{1}1,牛妹要把这个串划分成连续的m{m}m段,使得每一段至少包含一个0{0}0和一个1{1}1。
牛妹想最大化m{m}m,m{m}m最大是多少呢?
输入描述:
输入包含一行一个01{01}01串S{S}S。保证中至少包含一个0{0}0和一个1{1}1。
输出描述:
输出一行一个整数表示答案。
示例1
输入
10101111000010101111010101
输出
9
备注:
2≤∣S∣≤1e52≤∣S∣≤1e5
∣S∣表示字符串S的长度。
AC代码:
#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
int main(){
char a[100001];
int i=0;
while(scanf("%c",&a[i++])!=EOF);
int len=i-1;
int num=0;
i=0;
while(i<len){
if(a[i]=='0'){
while(a[i]=='0'&&i<len)
i++;
}
else if(a[i]=='1'){
while(a[i]=='1'&&i<len)
i++;
}
i++;
if(i<len){
num++;
}
}
cout<<num;
return 0;
}