• Implement strStr()


    Implement strStr().

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

    class Solution {
    public:
        char *strStr(char *haystack, char *needle) 
        {
            //BF
            /*
            for(char* pstart=haystack;(*pstart)!=NULL;pstart++)
            {
                char* p2=needle;
                for(char* p1=pstart;(*p1)!=NULL && (*p2)!=NULL;p1++,p2++)
                {
                    if((*p1)!=(*p2)) break;
                }
                if((*p2)==NULL) return pstart;
            }
            return NULL;
            
    */
            
            //KMP
            int len=strlen(needle);
            if(len==0return haystack;
            int* find=new int[len];
            find[0]=0;
            for(int i=1,j=0;i<len;i++)
            {
                while(j>0 && needle[i]!=needle[j]) j=find[j-1];
                if(needle[i]==needle[j]) j++;
                find[i]=j;
            }
            int textlen=strlen(haystack);
            for(int i=0,j=0;i<textlen;i++)
            {
                while(j>0 && haystack[i]!=needle[j]) j=find[j-1];
                if(haystack[i]==needle[j]) j++;
                if(j==len) return haystack+i-len+1;
            }
            return NULL;
        }
    };


  • 相关阅读:
    zookeeper logs is missing zookeeper 日志丢失
    Java Spring IoC 学习(3)
    jsp中include的两种用法
    java多态
    Referenced file contains errors
    类的初始化顺序
    PHP处理session跨域
    Apache中按天分割日志(Windows)
    redis和memcached的区别(总结)
    PHP中的traits简单理解
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759307.html
Copyright © 2020-2023  润新知