0

У меня есть строка (Привет, это строка), и я хочу найти ключевые слова в ней. Как мне это сделать?Оптимизированный алгоритм или метод, чтобы найти многословную строку (ключевые слова) в предложении (с несколькими словами)?

Я должен искать следующие ключевые слова в строке:

Строка: Привет, это строка.

Ключевые слова: 1. Здравствуйте это (должно совпадать) 2. Hello (должен совпадать) 3. Здравствуй т (не должно совпадать) 4. Привет это я (не должен совпадать)

Пожалуйста предложить оптимизированный способ построения структуры данных для хранения и поиска?

ответ

1

Если вы являетесь критерием, то только полное слово должно совпадать не только с половиной его, использовать разрыв, когда символ не соответствует/строка закончилась, и строка проверит, является ли индекс + 1 основной строки пробелом или запятая или полная остановка или что-то другое в соответствии с вашими потребностями. Если это так, то ваша строка является точным совпадением, иначе это будет символ.

0

Если вы ищете полные слова в строке. Добавьте место после ключевого слова и выполните следующие действия.

char * string = "Hello this is a string"; 
char * keyword = "Hello t "; 

if(strstr(string,keyword) != NULL) 
    printf("Matched"); 
else 
    printf("Not Matched"); 
+0

Это не работает, как это. Позвольте мне немного объяснить, что на самом деле мне нужно. У меня есть файл с 1000 строк (первый вопрос, как сохранить/построить структуру данных, чтобы был быстрый поиск). I.e «hello this is string 1», «Hello this is string 2». Я хочу найти ключевые слова i.e (привет, это строка 3) 100 запросов в секунду. Ваш soln значительно снизит производительность приложения, если я буду делать strstr для каждого отдельного запроса. Если у вас есть какой-либо способ сделать это, любезно поделиться или обсудить. Также, если у меня есть строка: «Привет», и я хочу выполните поиск по ключевому слову = «Привет». Ваш солон не удастся. – Gurpreet

+0

В этом случае вы можете использовать структуру данных trie и вставлять каждое слово строки в качестве узла в trie. –

+0

Я не могу использовать структуру данных trie. Поскольку длина ключевых слов и строка не фиксированы. Хотя trie выполняет поиск в O (n), но, как описано выше; это значительно увеличит время поиска. Другая проблема заключается в том, что если у меня будет 100 файлов, то мне придется поддерживать 100 три, что не очень хорошо с точки зрения памяти. Надеюсь, вы понимаете проблемы. – Gurpreet