leetcode——Implement strStr() 实现字符串匹配函数(AC)

Posted lytwajue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode——Implement strStr() 实现字符串匹配函数(AC)相关的知识,希望对你有一定的参考价值。

Implement strStr().

Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.

这个题考查的是KMP算法。先求特征向量,然后再进行匹配,确实能够大大提高效率。code例如以下:

class Solution {
public:
    char *strStr(char *haystack, char *needle) {
        if(strlen(haystack)==0&&strlen(needle)==0)
            return haystack;
        if(strlen(haystack)==0&&strlen(needle)!=0)
			return NULL;
		if(strlen(needle)==0)
		    return haystack;
		int m=strlen(needle);
        int *N = new int[m];
		N[0]=0;
		int i,j,k;
		for(i=1;i<m;i++)
		{
			k=N[i-1];
			while(k>0 && needle[i]!=needle[k])
			{
				k=N[k-1];
			}
			if(needle[i]==needle[k])
				N[i]=k+1;
			else
				N[i]=0;
		}
		j=0;
		for(i=0;i<strlen(haystack);i++)
		{
			while(j>0 && needle[j]!=haystack[i])
				j=N[j-1];
			if(needle[j]==haystack[i])
				j++;
			if(j==strlen(needle))
				return haystack+i-j+1;
		}
		return NULL;
    }
};




以上是关于leetcode——Implement strStr() 实现字符串匹配函数(AC)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Implement Queue using Stacks

[LeetCode]Implement Stack using Queues

LeetCode:Implement Queue using Stacks

LeetCode:Implement Stack using Queues

LeetCode Implement Stack using Queues

LeetCode-Implement Queue using Stacks