>백엔드 개발 >C++ >C 프로그램을 위한 순진한 패턴 검색 알고리즘

C 프로그램을 위한 순진한 패턴 검색 알고리즘

王林
王林앞으로
2023-09-08 13:41:02876검색

C 프로그램을 위한 순진한 패턴 검색 알고리즘

C의 패턴 일치 - 문자열이 다른 문자열에 존재하는지 찾아야 합니다. 예를 들어 문자열 "algorithm"이 문자열 "naive algorithm"에 존재합니다. 발견되면 해당 위치(즉, 위치)가 표시됩니다. 우리는 2개의 문자 배열을 받아 일치하는 항목이 있으면 위치를 반환하고, 그렇지 않으면 -1을 반환하는 함수를 만드는 경향이 있습니다.

Input: txt = "HERE IS A NICE CAP"
   pattern = "NICE"
Output: Pattern found at index 10
Input: txt = "XYZXACAADXYZXYZX"
   pattern = "XYZX"
Output: Pattern found at index 0
   Pattern found at index 9
   Pattern found at index 12

저희는 순진 모드 검색으로 이 문제를 해결하고 있습니다. 이 알고리즘은 작은 텍스트에 유용합니다. Naive는 문자열이 존재하는지 확인하기 위해 나타날 수 있는 모든 가능한 위치를 검사하여 다른 문자열 내에서 문자열이 나타나는 위치를 확인하는 간단하고 비효율적인 방법입니다.

Naive 알고리즘의 시간 복잡도는 O(mn)입니다. 여기서 m은 검색할 패턴의 크기이고 n은 컨테이너 문자열의 크기입니다.

패턴 검색은 컴퓨터 과학에서 매우 중요한 문제입니다. 메모장/단어 파일, 브라우저, 데이터베이스 또는 일부 정보에서 문자열을 찾을 때마다 패턴 검색 알고리즘은 검색 결과를 표시하는 데 사용됩니다.

Algorithm

naive_algorithm(pattern, text)

Input− 텍스트 및 패턴

Output− 텍스트에서 패턴이 나타나는 위치

Start
   pat_len := pattern Size
   str_len := string size
   for i := 0 to (str_len - pat_len), do
      for j := 0 to pat_len, do
         if text[i+j] ≠ pattern[j], then
         break
   if j == patLen, then
   display the position i, as there pattern found
End

실시간 데모

#include <stdio.h>
#include <string.h>
int main (){
   char txt[] = "tutorialsPointisthebestplatformforprogrammers";
   char pat[] = "a";
   int M = strlen (pat);
   int N = strlen (txt);
   for (int i = 0; i <= N - M; i++){
      int j;
      for (j = 0; j < M; j++)
         if (txt[i + j] != pat[j])
      break;
      if (j == M)
         printf ("Pattern matches at index %d </p><p>", i);
   }
   return 0;
}

출력

레이

위 내용은 C 프로그램을 위한 순진한 패턴 검색 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제