BF 알고리즘 코드 (초 상세)

그 전에 필요 한 지식:
  • 헤더 파일 에 strlen () 함수 계산 문자열 의 길 이 를 포함 하고 있 습 니 다. 끝 표지 '\ 0' 을 만 났 을 때 정지 합 니 다.
  • 예 를 들 어 문자열 은 'lx adore zlr' 라 는 문자열 상수 이 고 시스템 은 그 후에 '\ 0', 즉 'lx adore zlr \ 0' 을 자동 으로 보충 합 니 다.문자열 길 이 를 구 하 는 함수 strlen () 은 '\ 0' 만 만나면 함수 값 을 되 돌려 주기 때문에 되 돌아 오 는 값 은 12 (빈 칸 도 하나의 문자 로 계산 합 니 다) 입 니 다.
    예 를 들 어 strlen (lx \ 0 zlr): 그 중의 문자열 은 'lx \ 0 zlr' 이 고 strlen () 함수 가 '\ 0' 을 만나면 끝 이 므 로 반환 값 은 2 입 니 다.
  • 문자열 로 문자 배열 에 값 을 부여 할 때 끝 문자 '\ 0' 을 추가 해 야 하기 때문에 배열 의 길 이 는 문자열 의 길이 보다 1:
  • 큽 니 다.
    예 를 들 어 char str [] = "lxadorezlr";이 배열 의 메모리 에 실제 저장 되 는 상황 은 l x a d o r e z l r \ 0 이 문자열 의 길 이 는 10 이 고 배열 의 길 이 는 11 입 니 다.
    지금 바로 코드 올 리 기:
    #include
    #include		//  strlen()          
    int bf(char *s, char *t)
    {
         
    	int i = 0, j = 0;
    	int len_s = strlen(s) - 1;
    	int len_t = strlen(t) - 1;	//strlen()           ,            "\0",     1。(    555) 
    	while (i <= len_s && j <= len_t)
    	{
         
    		if (s[i] == t[j])
    		{
         
    			i++;
    			j++;
    		} else
    		{
         
    			i = i - j + 2;	//                ,            0  ,         1。(           ) 
    
    			j = 1;
    		}
    	}
    	if (j > len_t)
    		return i - len_t;
    	else
    		return -1;
    }
    
    int main()
    {
         
    	int i, j, k;
    	char *str1 = "lxadorezlr";
    	char *str2 = "adore";
    	k = bf(str1, str2);
    	printf("%d", k);
    	return 0;
    }
    

    BF 알고리즘 을 습득 한 후에 KMP 알고리즘 도 초보 적 인 인식 을 가 질 수 있 게 되 었 습 니 다 (다음 에 꼭).

    좋은 웹페이지 즐겨찾기