18.实现strStr()

本文介绍如何实现strStr()函数,该函数用于查找一个字符串在另一个字符串中首次出现的位置。文章详细解释了通过不断截取主字符串并与目标字符串对比的过程,并提供了完整的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目描述

实现 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<H-L+1; start++){
            if (haystack.substring(start,start+L).equals(needle)){
                return start;
            }
        }
        return -1;
    }
}

代码详细解析

第一步:获取haystack和needle字符的长度,指针start从0开始,结束位置是H-L+1=4(可以仔细想想为什么)
在这里插入图片描述

第二步:开始遍历:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值