zoukankan      html  css  js  c++  java
  • Implement strStr()

    Implement strStr().

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

    用KMP

    class Solution {
    public:
        char *strStr(char *haystack, char *needle) {
            int size = 0;
            for(;haystack[size]!='' ;size++);
            int size_needle =0;
            while(needle[size_needle]!='')size_needle++;
            if(size_needle == 0 )return haystack;
            
            
            vector<int> patten(size_needle,0);
            
            generatepatten(needle,size_needle,patten);
            
            int i = 0;
            int ind = 0;
            while( i < size )
            {
                if(haystack[i] == needle[ind] )
                {
                    i++;
                    ind++;
                    if(ind == size_needle )
                    return haystack + i - size_needle;
                }
                else
                {
                    i = i - ind + patten[ind] +1;
                    ind = 0;
                }
            }
            return NULL;
            
        }
        void generatepatten(char * needle , int size , vector<int> & patten)
        {
            int len = 0;
            for(int i = 1 ; i < size ;i++)
            {
                if(needle[i] == needle[len])
                {
                    patten[i] = ++len;
                }
                else 
                {
                    patten[i] = 0;
                    len = 0;
                }
            }
        }
    };
    

      

  • 相关阅读:
    java 通过Iterator输出Map
    java SortedSet接口swap方法
    java vector
    java Iterator双向迭代输出
    java 序列化和反序列化多个对象
    培训
    每天晚上

    又想起了

  • 原文地址:https://www.cnblogs.com/pengyu2003/p/3615654.html
Copyright © 2011-2022 走看看