博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
18.实现strStr()
阅读量:3977 次
发布时间:2019-05-24

本文共 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/

你可能感兴趣的文章
C语言 链表操作
查看>>
C语言 链表操作
查看>>
深入探讨C++中的引用
查看>>
深入探讨C++中的引用
查看>>
assert用法
查看>>
assert用法
查看>>
堆与栈有什么区别?
查看>>
堆与栈有什么区别?
查看>>
操作系统:进程/线程同步的方式和…
查看>>
操作系统:进程/线程同步的方式和…
查看>>
Makefile的编写
查看>>
Makefile的编写
查看>>
C语言常用算法
查看>>
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 3
查看>>
系统处理 IRQ_EINT0 IRQ_EIN…
查看>>
系统处理 IRQ_EINT0 IRQ_EIN…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>