您的位置:首页 > 其它

HackerRank Pattern Count 题解

2017-06-22 18:35 337 查看

题意

对于一个字符串,问其中有多少连续子串是形如1(0+)1的,其中(0+)表示正整数个连续的0

思路

从前往后扫,记录开始和结束,和中间0的个数,每一次结束都要后退一个因为有可能这一位是下一个符合要求的串的开始

代码

#include <cstdio>
#include <cstring>
char s[2001];
int main()
{
int q,l,ans,cnt;
bool now;
scanf("%d",&q);
while(q--)
{
scanf("%s",s);
l=strlen(s);
now=false;
ans=0;
cnt=0;
for(int i=0;i<l;i++)
{
if(now==false&&s[i]=='1')
{
now=true;
cnt=0;
}
else if(now==true)
{
if(s[i]=='1')
{
if(cnt>0)
ans++;
//printf("i:%d\n",i);
now=false;
i--;
cnt=0;
}
else if(s[i]!='0')
now=false;
else if(s[i]=='0')
cnt++;
}
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: