题目:
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
大意:
实现实现strStr()函数,判断一个字符串在另一个字符串中出现的位置。如果不匹配就返回-1。
思路:
找到needle首字母在haystack中出现的位置,接着先判断haystack剩下的字符串长度是否大于等于needle的长度,然后再判断字符串的每一个字符是否相等。
以上是一种简单的实现方法,此外,这道题好像可以用KMP算法来实现,有时间学习一下。
代码:
public class Solution {
public int strStr(String haystack, String needle) {
//几种特殊情况
if(haystack == null || needle == null) {
return 0;
}
if(needle.length()==0) {
return 0;
}
for(int i = 0; i < haystack.length(); i++) {
//判断haystack剩下的长度是否大于等于needle的长度
if(i + needle.length() > haystack.length()) {
return -1;
}
int p = i;
for(int j = 0; j < needle.length(); j++) {
依次判断每个字符是否相等
if(needle.charAt(j) == haystack.charAt(p)) {
p++;
} else {
break;
}
//所有字符全部比较完了
if(j == needle.length() - 1) {
return i;
}
}
}
return -1;
}
}