[size=medium]
我们称用1和0组成的串为“零幺串”,称只用1组成的串为“幺串”,称只用0组成的串为“零串”。试写一个函数(过程),使得它对任给零幺串S,将返回一个值N1和值N0,其中N1表示S中最长幺串的长度,N0表示S中最长零串的长度。例如,假设S是下面表示的零幺串,则在N1中返回4,在N0中返回3 S=00010111001110001111
[/size]
[color=red]基本思路是设置两个标志位来交替统计0和1的最长子串长度[/color]
我们称用1和0组成的串为“零幺串”,称只用1组成的串为“幺串”,称只用0组成的串为“零串”。试写一个函数(过程),使得它对任给零幺串S,将返回一个值N1和值N0,其中N1表示S中最长幺串的长度,N0表示S中最长零串的长度。例如,假设S是下面表示的零幺串,则在N1中返回4,在N0中返回3 S=00010111001110001111
[/size]
[color=red]基本思路是设置两个标志位来交替统计0和1的最长子串长度[/color]
#include<stdio.h>
void main()
{
char str[100] = "00010111001110001111";
int i=0;
int maxZero=0, maxOne=0;
int flagZero=0, flagOne=0;
// scanf("%s", str);
while(str[i] != '\0')
{
if(str[i] == '0')
{
flagOne = 0;
if(flagZero == 1)
{
maxZero++;
}
else
{
flagZero = 1;
maxZero = 1;
}
}
if(str[i] == '1')
{
flagZero = 0;
if(flagOne == 1)
{
maxOne++;
}
else
{
maxOne = 1;
flagOne = 1;
}
}
i++;
}
printf("N0:%d N1:%d", maxZero, maxOne);
}