Implement strStr().
Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.
这道题有很多需要注意的小点:
(1)You have to check if a String == null before call length(), otherwise it will throw NullPointerException. 所以我们要先判断null。
(2) 其次,如果不为null,不代表这个串长度不会为0。所以我们要做以下的判断。
int nlen = needle.length();
int hlen = haystack.length();
if(hlen == 0 && nlen == 0)
return "";
else if(hlen == 0 )
return null;
else if(nlen == 0)
return haystack;
(3) Substring这个方法endIndex是不包括的,所以我们必须这样写:
if(haystack.substring(i, i + nlen ).equals(needle))
return haystack.substring(i);
应为i + len而不是i + len - 1。
以下是我AC的代码:
public class Solution {
public String strStr(String haystack, String needle) {
if(haystack == null)
return null;
else if(needle == null)
return haystack;
else{
int nlen = needle.length();
int hlen = haystack.length();
if(hlen == 0 && nlen == 0)
return "";
else if(hlen == 0 )
return null;
else if(nlen == 0)
return haystack;
for(int i = 0; i < hlen; i++){
if(nlen > hlen - i){
return null;
}
else{
if(haystack.substring(i, i + nlen ).equals(needle))
return haystack.substring(i);
}
}
}
return null;
}
}