#include
#include
// Функция для поиска самой длинной алфавитной последовательности
void longestAlphabeticalSequence(const char *str, char *result) {
int maxLength = 0; // Длина самой длинной последовательности
int maxStart = 0; // Начальный индекс самой длинной последовательности
int currentLength = 1; // Текущая длина последовательности
int currentStart = 0; // Текущий начальный индекс последовательности
int n = strlen(str); // Длина строки
for (int i = 1; i < n; ++i) {
if (str[i] >= str[i - 1]) {
currentLength++;
} else {
if (currentLength > maxLength) {
maxLength = currentLength;
maxStart = currentStart;
}
currentLength = 1;
currentStart = i;
}
}
// Проверка последней последовательности
if (currentLength > maxLength) {
maxLength = currentLength;
maxStart = currentStart;
}
// Копирование самой длинной последовательности в результат
strncpy(result, &str[maxStart], maxLength);
result[maxLength] = '\0'; // Завершающий нулевой символ
}
int main() {
const char *input = "deabcdeabxyzabcdefg";
char result[100]; // Буфер для хранения результата
longestAlphabeticalSequence(input, result);
printf("Самая длинная алфавитная последовательность: %s\n", result);
return 0;
}
#include
#include
#include
bool in_az(char c) {
for (char i='a'; i<='z'; i++) {
if (c==i) return true;
}
return false;
}
int main() {
printf("Программа для поиска упорядоченных подстрок строки a..z\n");
char str[255];
printf("Введите строку: ");
scanf("%s", str);
int i_1;
int l_1;
int i_max;
int l_max;
if (strlen(str)==1) {
if (in_az(str[0])) {
i_1=0; l_1=1;
i_max=0; l_max=1;
} else {
i_1=0; l_1=0;
i_max=0; l_max=0;
}
} else {
// если первый символ в a..z
if (in_az(str[0])) {
i_1=0; l_1=1;
i_max=0; l_max=1;
} else {
i_1=0; l_1=0;
i_max=0; l_max=0;
}
for (int i=1; i if (in_az(str[i])) {
if (l_1 > 0) {
if (str[i]==(str[i_1+l_1-1]+1)) {
l_1++;
if (l_1 >= l_max) {
l_max=l_1; i_max=i_1;
}
} else {
if (l_1 >= l_max) {
l_max=l_1; i_max=i_1;
}
i_1=i; l_1=1;
}
} else {
i_1=i; l_1=1;
if (l_1 >= l_max) {
l_max=l_1; i_max=i_1;
}
}
} else {
i_1=i; l_1=0;
}
}
}
if (l_max>0) {
for (int i=0; i if (i==i_max) {
printf("[");
}
printf("%c",str[i]);
if (i==(i_max+l_max-1)) {
printf("]");
}
}
} else {
printf("Искомая строка не найдена!\n");
return 1;
}
return 0;
}
удалил все комментарии, т.к. с ними не помещалось на ответы. надеюсь, не удалил ничего лишнего