问题描述
解决方案
#include <stdio.h>
#include <string.h>
void main()
{
char str[]="zeroonezero";
int num=0;
char *p;
p=str;
while(*p)
{
if(*p=='z')
{
if(num) num*=2;
p=p+4;
}else if(*p=='o')
{
if(num) num=num*2+1;
else num=1;
p=p+3;
}
}
printf("%dn",num);
}
解决方案二:
从第1/*i=0*/字符开始判断如果是o,则是1,直接跳到第i+3判断,如果是z,则跳到i+4,如果是o,i+3
要么直接从后往前判断,判断一位算一个值,算到最前面答案也就出来了
解决方案三:
或者每次读一个字符比较。
读到'o' 再读两个,'z'读三个。那就全部读2个,单独判断是'z'就多读一个
处理数字:没加一个1/0,数字的二进制左移一个(或者乘于2),如果是one,则是加在最后面的个位数,即num+1
大致:
char ch;
int num;
while( (ch=getchar()) !=EOF){
num << 1;
if(ch=='z') getchar();
if(ch=='o') num += 1;
getchar();
getchar();
}
时间: 2024-10-30 10:52:24