字符串匹配算法:找到子串在原字符串中第一次出现的位置
字符串A:abcabcabcabc
字符串B:bca
1、朴素字符串匹配算法
假设有两个指针,一个i指向字符串A的起始位置,一个j指向字符串B的起始位置;
(1)若A[I]==B[j],则i++;j++
(2)在(1)的情况下,若A[i]!=A[j],则j=0,i回到A字符串的上一次的起始位置。
缺点:不适用于那种多个相同的,不能找到第一个相同的位置。
int string_match(char*str1, char*str2) { int n = strlen(str1); int m = strlen(str2); for (int i=0;i<=n-m;i++) { for (int j = 0; j < m; j++) { if (str1[i] != str2[j]) break; if (j == m - 1) return i - m; } } } int main() { char str1[1000], str2[1000]; cin >> str1 >> str2; int m = string_match(str1, str2); cout << m; return 0; }
原文地址:https://www.cnblogs.com/xiaotuzihenmang/p/8486327.html
时间: 2024-10-08 14:59:42