给你两个字符串 haystack
和 needle
,请你在 haystack
字符串中找出 needle
字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle
不是 haystack
的一部分,则返回 -1
示例 1:
输入:haystack = "sadbutsad", needle = "sad" 输出:0 解释:"sad" 在下标 0 和 6 处匹配。 第一个匹配项的下标是 0 ,所以返回 0 。
示例 2:
输入:haystack = "leetcode", needle = "leeto" 输出:-1 解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1
//有两个字符串 在A中找出B字符串中的第一个匹配项的下标 就是说B的整体单词是在A中出现的 不能说是跳着的 一个指向A 一个指向B class Solution { public: int strStr(string A, string B) { for(int i = 0;i<A.size();i++){//开头 int N = 0; for(int j = 0;j<B.size();j++){ if(j+i<A.size()&&A[i+j] == B[j]) N++; if(N == B.size()) return i; } } return -1; } }; ---- //双指针 class Solution { public: int strStr(string haystack, string needle) { int i = 0; int j = 0; while(haystack[i]!='\0'&&needle[j]!='\0') { if(needle[j]==haystack[i])//判断是否相等 { j++; i++; } else//不相等退回开始的位置,i+1,j=0; { i = i - j + 1; j = 0; } } if(j == needle.length())//j为步长 return i-j; return -1; } };