前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道leetcode28-实现strStr()

每天一道leetcode28-实现strStr()

作者头像
乔戈里
发布2019-09-17 14:58:57
3480
发布2019-09-17 14:58:57
举报
文章被收录于专栏:Java那些事Java那些事

昨天的题解

题目

每天一道leetcode28-实现strStr() 分类:双指针 中文链接: https://leetcode-cn.com/problems/implement-strstr/submissions/ 英文链接 https://leetcode.com/problems/implement-strstr/submissions/

题目详述

实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2 示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

题目详解

思路

  • 一次比较过程:遍历haystack字符串,找到与needle开头字符然后记录下来这个位置i,然后j=i+1依次与needle进行比较,看每个字符是否相等,相等就继续比较下一个字符,直到找到不相等的字符,那么这次比较久结束,如果都相等直接返回i;
  • 接下来就是haystack字符串i进行+1,然后再重复上述过程。

代码(今天排版工具有问题,先截图了)

代码讲解

  • 5-6行把字符串转化成字符数组处理
  • 7行是外层循环,也就是haystack字符串
  • 9行如果haystack字符串的字符与needle字符串的开头字符相等,那么这里用j=i+1;然后从相等的下一个字符开始依次与needle的每一个字符进行比较
  • 13-21行就是比较过程,18-19行如果中途出现不相等的那么就比较结束;跳到外层循环也就是haystack字符串再往下移动一位
  • 22-23行就是needle字符串都遍历完了,k已经到了字符串的末尾的位置了,说明每个字符都相等,那么就返回haystack字符串开始的位置i;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 昨天的题解
    • 题目
      • 题目详述
        • 题目详解
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档