用1和0组成的串为“零幺串”。编写程序实现,任意输入零幺串S,将返回一个值N1和一个值N0,其中N1表示S中最长幺串的长度,N0表示S中最长零串的长度。例如假设S是
00010111001110001111,则返回的N0 = 3,N1 = 4.
代码:
#include <stdio.h>
#include <string.h>
void countNum(char* str,int* N0,int* N1);
int main()
{
char str[30];
gets(str); //gets()其作用是从终端输入一个字符串到字符数组
int iNum0=-1;
int iNum1=-1;
countNum(str,&iNum0,&iNum1);
printf("%s: NO=%d,N1=%d.\n",str,iNum0,iNum1);
return 0;
}
void countNum(char* str,int* N0,int* N1) //指针变量作为函数参数
{
int maxNum0=0;
int maxNum1=0;
int length = strlen(str);
int count=0;
int i=0;
for(i=0;i<length;i++) //计数0的最长串
{
if(str[i]=='0') {
count ++;
if(count > maxNum0) {
maxNum0=count;
}
}else { //每遇到1,count就清零
count=0;
}
}
count=0; //count清零,准备计数1的最长子串
for(i=0;i<length;i++) {
if(str[i]=='1') {
count ++;
if(count > maxNum1) {
maxNum1 = count;
}
}else { //每遇到0,count就清零
count=0;
}
}
(*N0) = maxNum0;
(*N1) = maxNum1;
}