题目描述:https://zhuanlan.zhihu.com/p/546563566
代码分层有利于代码调试。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int str_len;
char str[1024] = {0};
int check(int start, int end)
{
for (int i = start; i <= end; i++) {
if ((i - start) % 2 == 0) {
if (str[i] == '1') {
return 0;
}
} else {
if (str[i] == '0') {
return 0;
}
}
}
return 1;
}
int findCompleteSignal(int start)
{
for (int i = start; i < str_len; i++) {
if (str[i] == '0' && str[i + 1] == '0') {
return i;
}
}
if (str[str_len - 1] == '0') {
return str_len - 1;
}
return -1;
}
int main(void)
{
int signal_max = 0;
int res_flag = 0;
char res[1024] = {0};
scanf("%s", str);
str_len = strlen(str);
int signal_end, signal_len;
for (int i = 0; i < str_len - 1; i++) {
if (str[i] == '0' && str[i + 1] == '1') {
signal_end = findCompleteSignal(i);
if ((signal_end != -1) && (check(i, signal_end) == 1)) {
res_flag = 1;
signal_len = signal_end - i + 1;
if (signal_max < signal_len) {
signal_max = signal_len;
memset(res, 0, 1024);
strncpy(res, &str[i], signal_len);
}
}
if (signal_end != -1) i = signal_end;
}
}
if (res_flag == 0) {
printf("-1\n");
} else {
for (int i = 0; i < strlen(res); i++) {
printf("%c", res[i]);
}
printf("\n");
}
return 0;
}