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
代码实现:
class Solution {
public int strStr(String haystack, String needle) {
// haystack.indexOf(needle)就可实现
if (needle == null || "".equals(needle)) return 0;
if (haystack == null || "".equals(haystack)) return -1;
int lenOrigin = haystack.length();
int lenNeedle = needle.length();
int distance = lenOrigin - lenNeedle;
if (distance < 0) {
return -1;
}
String temp = null;
// 时间复杂度(O(n) n取决于两个字符串长度的差值)
for (int i=0; i<=distance; i++) {
temp = haystack.substring(i, i+lenNeedle);
if (needle.equals(temp)) {
return i;
}
}
return -1;
}
}
LeetCode的其他实现方法:
public int strStr(String haystack, String needle) {
// 时间复杂度(O(m*n))
for (int i = 0; ; i++) {
for (int j = 0; ; j++) {
if (j == needle.length())
return i;
if (i + j == haystack.length())
return -1;
if (needle.charAt(j) != haystack.charAt(i + j))
break;
}
}
}