一、问题描述
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
二、问题分析
求解haystack字符串中最先出现needle字符串的位置,变量 i 代表haystack字符串字符的位置,j 代表needle字符串的位置,i从0开始,j从0开始挨个字符比较,当发现后面字符不相符,i变为1,j再从0开始,再次挨个比较,当完全匹配则返回i,当不匹配,i++,再次重复。
需要注意几个问题:1.两个字符串为null;2.needle字符串为空的情况,只要needle字符串为空,则返回0;3.needle字符串的长度小于haystack字符串的长度。
三、代码
public class Solution {
public int strStr(String haystack, String needle) {
if(haystack==null || needle==null){
return -1;
}
if(needle.equals(""))
return 0;
int l=haystack.length();
int m=needle.length();
if(l<m)
return -1;
int i=0;
int j=0;
while(i+j<l && j<m){
if(haystack.charAt(i+j)==needle.charAt(j)){
j++;
}
else{
i++;
j=0;
}
if(j==m)
return i;
}
return -1;
//return haystack.indexOf(needle);
}
}