网站开发需要哪些工程师,wordpress文章列表全文,济南富腾网站建设,网站建设好怎么发布实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在#xff0c;则返回 -1。 示例 1: 输入: haystack hello, needle ll 输出: 2 示例… 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在则返回 -1。 示例 1: 输入: haystack hello, needle ll 输出: 2 示例 2: 输入: haystack aaaaa, needle bba 输出: -1 说明: 当 needle 是空字符串时我们应当返回什么值呢这是一个在面试中很好的问题。 对于本题而言当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 来源力扣LeetCode 链接https://leetcode-cn.com/problems/implement-strstr 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 解法 class Solution {
public:vectorint getnext(string str){int len str.size();vectorint next;next.push_back(-1);//next数组初值为-1int j 0, k -1;while (j len - 1){if (k -1 || str[j] str[k])//str[j]后缀 str[k]前缀{j;k;next.push_back(k);}else{k next[k];}}return next;}int strStr(string haystack, string needle) {if (needle.empty())return 0;int i 0;//源串int j 0;//子串int len1 haystack.size();int len2 needle.size();vectorint next;next getnext(needle);while ((i len1) (j len2)){if ((j -1) || (haystack[i] needle[j])){i;j;}else{j next[j];//获取下一次匹配的位置}}if (j len2)return i - j;return -1;}
};