LeetCode Implement strStr()

题目链接:https://oj.leetcode.com/problems/implement-strstr/

Implement strStr()

  Total Accepted: 11761  Total Submissions: 55407 My Submissions

Implement strStr().

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

Have you been asked this question in an interview? 

kmp就完了,没啥好说


class Solution {
public:
    char *strStr(char *haystack, char *needle) {
        int len1=strlen(haystack),len2=strlen(needle);
        vector<int> next(len2,-1);
        getNext(needle,next);
        int i=0,j=0;
        while(i<len1&&j<len2){
        	if(j==-1||haystack[i]==needle[j]){
        		i++,j++;
        	}
        	else{
        		j=next[j];
        	}
        }
                	if(j==len2){
        		return haystack+i-j;
        	}
        return NULL;
    }
    void getNext(char *needle,vector<int>&next){
    	int len=strlen(needle);
    	int i=0,j=-1;
    	while(i<len-1){
    		if(j==-1||needle[i]==needle[j]){
    			next[++i]=++j;
    		}
    		else{
    			j=next[j];
    		}
    	}
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值