题目:
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
3种示例:
输入:haystack = "hello", needle = "ll" 输出:2
输入:haystack = "aaaaa", needle = "bba" 输出:-1
输入:haystack = "", needle = "" 输出:0
解决方法:
采用暴力匹配。
问题:
各个字符怎么比较? -> 循环,用charAt().
若比较成功,怎么记录最早开始的下标?
当和needle的第一个字符比较成功后,怎么让haystack位置往后移?
代码部分:
class Solution {
public int strStr(String haystack, String needle) {
if(needle.length() == 0) return 0;
int haylength = haystack.length();
int needlelength = needle.length();
for(int i=0;i<haylength-needlelength+1;i++){ //最多循环haylength-needlelength+1次就可以找到要返回的i值。
int j;
for(j=0;j<needlelength;j++){
if(needle.charAt(j) != haystack.charAt(i + j)){ //这一步很巧妙,如果说第一个字符就匹配失败,那么就直接退出,此时needle字符的j还是=0,haystack字符串的 i++,移到下一位。当匹配成功时,needle字符的 j ++;
break;
}
}
if(j == needlelength) return i; //循环到最后也没发现不匹配的值,匹配成功。而且haystack 的第i个就是字符串开始处。
}
return -1;
}
}