Implement strStr().
Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Example 1:
Input: haystack = “hello”, needle = “ll”
Output: 2
Example 2:
Input: haystack = “aaaaa”, needle = “bba”
Output: -1
Clarification:
What should we return when needle is an empty string? This is a great question to ask during an interview.
For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C’s strstr() and Java’s indexOf().
class Solution {
public int strStr(String haystack, String needle) {
if(needle.equals("")){
return 0;//空string返回0
}
int h = haystack.length();
int n = needle.length();
if (h<n){
return -1;
}
char first=needle.charAt(0);
for(int j = 0; j <= h-n;j++){
//循环haystack
if(haystack.charAt(j) == first){
//直到找到第一个char 和 needl1 一样,
int i = 1;
for( ;i < n;i++){//进入第二个循环
//第二个循环从haystack 匹配的下一个字符开始,所以引所初始值为1, 第一个判断的引索为 j+i(j+1)一次循环,
if(haystack.charAt(j+i) != needle.charAt(i)){
break;//如果下一个和needle 的下一个字符不匹配则停止,
}
}
if(i == n){//如果添加的长度等于needle 的长度 return j
return j;
}
}
}
return -1;
}
}
很简单一题 错在一个很简单的点
string排空用 if(needle.equals(""))我写成 了 == null
低级错误 基础有待加强