提供一个不太好的思路,开始我试图用异或来计算出总的needle的结果,然后这个值和目标字符串异或,如果等于0,说明相同。但是这样不行,异或相当于一个加和结果,但是过程可能有很多组合。
所以,最终还是老老实实的,如果发现第一位相等的,
class Solution {
public int strStr(String haystack, String needle) {
if(needle.length()==0){
return 0;
}
if(haystack.length()==0||haystack.length()<needle.length()){
return -1;
}
char[] nd=needle.toCharArray();
char[] hs=haystack.toCharArray();
char first=nd[0];
int len=nd.length;
for(int j=0;j<hs.length;j++){
if(hs[j]!=first){
continue;
}else{
boolean flag=true;
if(hs.length-j<len){
break;
}
for(int k=0;k<len;k++){
if(nd[k]!=hs[k+j]){
flag=false;
break;
}
}
if(flag){
return j;
}
}
}
return -1;
}
}