zoukankan      html  css  js  c++  java
  • 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;
        }
    };


  • 相关阅读:
    CentOS/RHEL 查看用户登陆信息
    PAM
    块存储
    ECS
    SQL 基础应用
    MySQL 基础管理
    MySQL 体系结构
    JSON对象
    设置dom节点属性的代码优化
    Ext框架下的元素拖动
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7149918.html
Copyright © 2011-2022 走看看