本文共 818 字,大约阅读时间需要 2 分钟。
实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
说明:
当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。
java中有截取字符串的方法:
public String substring(int beginIndex, int endIndex)
: 这个方法截取的字符串从beginIndex开始,到字符串索引的endIndex - 1结束,即截取的字符串不包括endIndex这个索引对应的字符,所以endIndex的最大值为整个字符串的长度。
本题中通过不停的截取主串haystack的值,每次截取的长度是needle的长度,截取的值和needle进行比较。
class Solution { public int strStr(String haystack, String needle) { //获取两个字符串的长度 int L = needle.length(); int H = haystack.length(); //haystack的长度-needle的长度+1作为start结束的位置,正好是needle的位置 for (int start=0; start
代码详细解析:
第一步:获取haystack和needle字符的长度,指针start从0开始,结束位置是H-L+1=4(可以仔细想想为什么)
第二步:开始遍历:
转载地址:http://flgki.baihongyu.com/