Problem: 28.
给你两个字符串 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 。
提示:
1 <= haystack.length, needle.length <= 104
haystack
和needle
仅由小写英文字符组成
通过次数
970.1K
提交次数
2.3M
通过率
[TOC]
思路
类似双指针,以下标i,j来访问两个数组
解题方法
p,q分别测量两个字符串长度,开两个循环,如果str==needle[i],外层i作为标记这个值,needle[j]访问每一个字符,haystack[i+j]则是访问相对对齐于needle的字符串
int strStr(char* haystack, char* needle)
{
int p,q,i=0,j=0;
char str=needle[0];
p=strlen(haystack),q=strlen(needle);
for(int i=0;i<p;i++)
{
if(str==haystack[i])
{
for(j=0;j<q;j++)
{
if(haystack[i+j]!=needle[j])
break;
else if(needle[j+1]=='\0')
return i;
}
}
}
return -1;
}