Ниже приведен алгоритм поиска повторяющегося шаблона строки. Все строки уже добавлены в связанном списке, теперь задача состоит в том, чтобы найти дубликат шаблона.Эффективный алгоритм поиска для поиска повторяющихся строк
Длина строки может составлять 8-20 символов, а количество строковых элементов в связанном списке составляет от 100 до 200. Современный подход, похоже, имеет проблемы сложности и эффективности. Может ли кто-нибудь предложить наиболее эффективный подход для этого?
typedef struct Map
{
int8_t *string;
struct Map *next;
}map_t;
//Algorithm to find the duplicate string pattern in link list.
int16_t findDuplicateOids(map_t *head)
{
map_t *ptr1, *ptr2;
ptr1 = head;
/* Pick elements one by one */
while(ptr1 != NULL && ptr1->next != NULL)
{
ptr2 = ptr1;
/* Compare the picked element with rest of the elements */
while(ptr2->next != NULL)
{
/* If pattern is similar than return return error */
if(!strcmp(ptr1->string , ptr2->next->string))
{ printf("match happened");
return RESULT_ERROR;
}
else
{
ptr2 = ptr2->next;
}
}
ptr1 = ptr1->next;
}
return RESULT_SUCCESS;
}
Какой уровень производительности вы хотите достичь? Наивный алгоритм отлично выглядит для 100 строк. – kraskevich
Вы хотите сказать, что этот алгоритм будет эффективен для 100 строк? – user2997518
Это зависит от того, насколько быстро вам это нужно. Какое время работы вы хотите достичь? – kraskevich