Упражнения на C: Найти длину самой длинной подстроки в данной строке без повторяющихся символов
Практика программирования C: упражнение 2 с решением
Напишите программу на C, чтобы найти длину самой длинной подстроки данной строки без повторяющихся символов.
Код C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int length_of_longest_substring(char *str1)
{
int offset[128];
int substr_max_len = 0;
int len = 0;
int index = 0;
memset(offset, 0xff, sizeof(offset));
while (*str1 !='\0') {
if (offset[*str1] == -1) {
len++;
}
else {
if (index - offset[*str1] > len)
{
len++;
}
else
{
len = index - offset[*str1];
}
}
if (len > substr_max_len)
{
substr_max_len = len;
}
offset[*str1++] = index++;
}
return substr_max_len;
}
int main(void)
{
char *str1 ="xyzxyzyy";
printf("\nOriginal String: %s", str1);
printf("\nLength of the longest substring without repeating characters: %d\n", length_of_longest_substring(str1));
return 0;
}
Пример вывода:
Оригинальная строка: xyzxyzyy Длина самой длинной подстроки без повторяющихся символов: 3
Иллюстрированная презентация:
Блок - схема:
Решение
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программирование на C, чтобы получить индексы двух чисел для данного массива целых чисел, так чтобы сумма двух чисел была равна определенной цели.
Далее: Напишите программу на C, чтобы найти медиану двух заданных отсортированных массивов, которые не являются пустыми.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code