Таким образом, данная задача состоит в том, чтобы создать функцию, которая проверяет любую строку, если
- Все 5 букв «a», «b», «c», «d» и «e» включены (в любой
последовательность) и
- Строка 'abcde' является подстрокой данной строки.
Если 1 выполнено (но 2 нет), верните 1.
Если оба 1 и 2 верны, верните 2.
В противном случае верните 0.
Примеры:
checkabcde(“someaxbxcxdxemm”) -> 1
checkabcde(“someOtherValue”) -> 0
checkabcde(“xyabcdeping”) -> 2
checkabcde(“someaxuxdxlxammabcde”) -> 2
В моем подходе я смог обнаружить, что подстрока «abcde», но не могу определить, что строка содержит «a», «b», «c», «d», «e» в любом последовательность
int checkabcde(char str[]) {
char str2[] = {
'a',
'b',
'c',
'd',
'e'
};
char str3[5]; //to be filled with elements from str2 when found inconsecutive order
int i, z, x, f;
z = 0; //position for str3
f = 0; //flag for similarity comparison of str2 and str3
for (i = 0; i < strlen(str); i++) {
for (x = 0; x < strlen(str2); x++) {
if (str[i] == str2[x]) {
if ((str[i] == 'a') && (str[i + 1] == 'b') && (str[i + 2] == 'c') && (str[i + 3] == 'd') && (str[i + 4] == 'e')) {
return 2;
} else {
if (str3[z] != str[z - 1]) {
str3[z] = str2[x];
z++;
}
}
}
}
}
for (i = 0; i < 5; i++) {
for (x = 0; x < 5; x++) {
if (str2[i] == str3[x]) {
f++;
}
}
}
if (f == 5) {
return 1;
} else if (f1 == 0) {
return 0;
}
}
редактировать: указатели не допускаются