pta字符串匹配算法比较c语言代码
时间: 2024-11-06 15:20:21 浏览: 33
PTA字符串冒泡排序(C语言版)
pta(Pattern Tiling Algorithm)是一种高效的字符串匹配算法,也被称为“行主串算法”或“滑动窗口法”。它通过维护两个指针,一个固定在模式串(pattern string)的开始,另一个在文本串(text string)上逐步移动,寻找是否存在连续的字符序列与模式串相匹配。
以下是简单的C语言代码示例,展示了如何使用pta算法进行匹配:
```c
#include <stdio.h>
#include <string.h>
int PTA(char* text, char* pattern) {
int n = strlen(text);
int m = strlen(pattern);
if (m > n)
return -1; // 如果模式长度大于文本,不可能全匹配
int i = 0;
int j = 0;
while (i < n && j < m) {
if (text[i] == pattern[j])
i++, j++;
else {
if (j != 0)
j = j - pattern[j - 1];
else
i++;
}
}
// 如果j到达了m,说明找到了一个完全匹配
if (j == m)
return i - m;
return -1; // 没有找到匹配,返回-1
}
int main() {
char text[] = "ABABCAB";
char pattern[] = "ABC";
int result = PTA(text, pattern);
if (result == -1)
printf("Pattern not found.\n");
else
printf("Match found at index %d.\n", result);
return 0;
}
```
在这个例子中,`PTA()` 函数接受两个字符串作为输入,然后检查文本串从哪个位置开始到结尾,可以形成一个连续的子串与模式串完全匹配。如果找不到匹配,则返回-1。
阅读全文