我必须按“ZOJ”顺序输出每个字符串。字符串的长度是从 1 到 100。“E”表示输入的结尾。
我用 gcc 测试我的程序。我尝试了很多例子,输出很好。然而,网上的判断竟然是错误的答案。
例子:
输入:
ZZOOOJJJ
ZZZZOOOOOOJJJ
动物园
乙
输出:
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO
谢谢!这是我的代码。
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 100
main() {
char data[MAX_SIZE];
int len;
int z,o,j;
int i;
char c;
int z_index, o_index,j_index;
while(scanf("%s", data)!= EOF && (strlen(data)>=1 && data[0] != 'E')) {
len = strlen(data);
z = -1;
o = -1;
j = -1;
z_index = -1;
o_index = -1;
j_index = -1;
for(i=0; i<len; i++) {
c = data[i];
switch(c) {
case 'Z':
if(z==-1)
z_index=i,z=i;
else
z = i;
break;
case 'O':
if(o==-1)
o_index=i,o=i;
else
o = i;
break;
case 'J':
if(j==-1)
j_index=i,j=i;
else
j = i;
break;
}
}
while(z_index!=-1 || o_index!=-1 || j_index!=-1) {
if(z_index!=-1 && z_index<=z)
putchar('Z'), z_index++;
else
z_index = -1;
if(o_index!=-1 && o_index<=o)
putchar('O'), o_index++;
else
o_index = -1;
if(j_index!=-1 && j_index<=j)
putchar('J'), j_index++;
else
j_index = -1;
}
putchar('\n');
}
}