zoukankan      html  css  js  c++  java
  • LeetCode

    28. Implement strStr() 

    Problem's Link

     ----------------------------------------------------------------------------

    Mean: 

    给定两个字符串str1和str2,输出str2在str1中第一次出现的下标.

    analyse:

    KMP算法模板题.

    Time complexity: O(N)

     

    view code

    /**
    * -----------------------------------------------------------------
    * Copyright (c) 2016 crazyacking.All rights reserved.
    * -----------------------------------------------------------------
    *       Author: crazyacking
    *       Date  : 2016-02-19-16.45
    */
    #include <queue>
    #include <cstdio>
    #include <set>
    #include <string>
    #include <stack>
    #include <cmath>
    #include <climits>
    #include <map>
    #include <cstdlib>
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    typedef long long(LL);
    typedef unsigned long long(ULL);
    const double eps(1e-8);


    class Solution
    {
    public:
       int Next[100005];
       void getNext(string& s)
       {
           Next[0]=0;
           for(int i=1,k=0;i<s.length();++i)
           {
               while(s[i]!=s[k] && k)
                   k=Next[k-1];
               if(s[i]==s[k])
                   ++k;
               Next[i]=k;
           }
       }
       int strStr(string haystack, string needle)
       {
           if(needle.length()==0)
               return 0;
           getNext(needle);
           for(int i=0,k=0;i<haystack.length();++i)
           {
               while(haystack[i]!=needle[k] && k)
                   k=Next[k-1];
               if(haystack[i]==needle[k])
                   ++k;
               if(k==needle.length())
                   return i-k+1;
           }
           return -1;
       }
    };

    int main()
    {
       string str1,str2;
       while(cin>>str1>>str2)
       {
           Solution solution;
           cout<<solution.strStr(str1,str2)<<endl;
       }
       return 0;
    }
    /*

    */
  • 相关阅读:
    Commix命令注入漏洞利用
    漏洞扫描
    信息搜集神器
    peepingtom
    自动化安装一些渗透工具的脚本
    MITMF
    Xssf配合metaspolit使用
    Beef安装与简单使用
    Linux安全检测常用方法
    cobaltstrike3.8服务器搭建及使用
  • 原文地址:https://www.cnblogs.com/crazyacking/p/5201780.html
Copyright © 2011-2022 走看看