思路:
当时交了好多次。需要注意;
1. 0k后面紧跟着0时,就只输出0k0,如果是0k000005还是输出0k0
2. 0k0k5时,应该输出0k0
3.如果0k第i+2个不是0,在所要求的范围内,那就输出这个字符,直到不满足要求字符break; 然后继续往后判断~
4.如果0k后面不满足所要求给的字符的话,就不输出0k
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char a[1000001];
int main()
{
int len,i,j,flag=0;
gets(a);
len=strlen(a);
for(i=0;i<len-2;i++)
{
if(a[i]=='0'&&a[i+1]=='k')
{
if(a[i+2]>='A'&&a[i+2]<='E'||a[i+2]>='0'&&a[i+2]<='9')
printf("0k");
if(a[i+2]=='0')
{
printf("0");
i=i+2;
printf("\n");
}
else{
flag=0;
for(j=i+2;j<len;j++)
{
if(a[j]>='A'&&a[j]<='E'||a[j]>='0'&&a[j]<='9')
{
printf("%c",a[j]);
flag=1;
}
else
break;
}
i=j;
if(flag)
printf("\n");
}
}
}
return 0;
}