点击关注,我们共同每天进步一点点!

实现 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() 定义相符。

来源:力扣(LeetCode)
链接:
https://leetcode-cn.com/problems/implement-strstr

解答

def strstr(haystack, needle):    """    python自带作弊方法    :type haystack: str    :type needle: str    :rtype: int    """    return haystack.find(needle)

def strstr1(haystack, needle):    """    笨的方法,时间超时了    :type haystack: str    :type needle: str    :rtype: int    """    i, j, index = 0, 0, -1    if needle == '':        return 0    # 防止出现"mississippi", "issip"类似case,第一次查找不完全匹配,就从第一次匹配的+1位置重新开始    while index         while i and j             if haystack[i] == needle[j]:                if j == 0:  # needle第一次匹配上,haystack相应的下标                    index = i                j += 1  # needle匹配上,下标往后走            elif j != 0:  # j!=0说明没有完全匹配,跳出此次循环                break            i += 1        # needle的下标全部走完,才是完全匹配        if j == len(needle):            return index        # 如果index一直是-1说明一个字符也没匹配上;否则就是匹配不完全        if index == -1:            return -1        else:            i, j, index = index + 1, 0, -1    return -1

def strstr2(haystack, needle):    """    这是大神的    :type haystack: str    :type needle: str    :rtype: int    """    if needle == '':        return 0    elif needle not in haystack:        return -1    else:        lens = len(needle)        for i in range(len(haystack)):            if haystack[i] == needle[0] and haystack[i:i + lens] == needle:                return i

if __name__ == "__main__":    # haystack, needle = "hello", "ll"    # haystack, needle = "aaaaa", "bba"    haystack, needle = "mississippi", "issip"    # haystack, needle = "mississippi", ""    print strstr2(haystack, needle)

喜欢请关注,有用请转发~

升职、加薪、无漏测-点“在看”

strstr函数_leetcode第28题实现strStr()相关推荐

  1. LeetCode集锦(十) - 第28题 Implement StrStr

    LeetCode集锦(十) - 第28题 Implement StrStr 问题 Implement strStr().Return the index of the first occurrence ...

  2. C语言 strstr函数的用法及模拟实现strstr函数

    C语言 strstr函数的用法及模拟实现strstr函数 一.strstr函数的用法 二.模拟实现strstr函数的功能 一.strstr函数的用法 1.strstr函数原型:char* strstr ...

  3. strstr函数_[LeetCode] 28. 实现strStr()

    题目链接: https://leetcode-cn.com/problems/implement-strstr/ 题目描述 实现 strStr() 函数. 给定一个 haystack 字符串和一个 n ...

  4. LeetCode第28题 实现strStr()之KMP算法(C++)【代码已提交成功】

    目录 初步思路 朴素匹配算法 KMP算法 NEXT数组 利用NEXT数组改进朴素匹配算法 初步思路 这是一道难度为简单的题,所以不熟悉的话可能第一反应就是朴素匹配的算法.但因为考研的时候学过数据结构, ...

  5. strchr strstr函数php,PHP字符串函数之 strstr stristr strchr strrchr

    strstr -- 查找字符串的首次出现,返回字符串从第一次出现的位置开始到该字符串的结尾或开始. stristr -- strstr 函数的忽略大小写版本 strchr -- strstr 函数的别 ...

  6. C语言中的strstr函数的用法

    strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. PHP语言函数 编辑 strstr() ...

  7. strstr函数.c

    包含文件: string.h 函数名: strstr 函数原型: 1 extern  char  * strstr ( char  *str1,  const  char  *str2); 语法: 1 ...

  8. strstr函数的原理原来是这样的

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.strstr函数是什么? 二.strstr函数的参数及实现原理 1.参数 2.strstr函数的模拟使用 总结 前 ...

  9. C语言strstr函数

    strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. C语言函数 包含文件:string.h ...

最新文章

  1. java i o不会的地方_Java I/O 好复杂,傻傻分不清楚,别担心,我们有线索了。。。...
  2. 用Java实现天天酷跑(附源码),这个真的有点强了!
  3. 为什么C语言是非形式化的,《数据结构C语言版》——绪论
  4. R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析:拟合连续性自变量和事件风险之间的关系并绘制直方图、平滑曲线、双Y轴于同一个图像中
  5. swapCursor vs changeCursor, what’s the difference?
  6. java 继承示例_Java中的继承类型以及示例
  7. Doris之分区缓存(全面)
  8. Linux文件解压缩
  9. 如何使用vs进行代码比较
  10. 旅游网站源码在哪下载,完整的
  11. mathcad15安装方法(解决了认证错误问题)
  12. 经纬财富:昭通炒现货白银技巧
  13. 磨刀不误砍柴工(1)stress 和 pidstat
  14. VM虚拟机设置桥接模式
  15. 大学计算机知识点cad,大学cad考试试题「附答案」
  16. 扫雷小游戏(两小时完成)
  17. java 自省_java spring mvc 自省机制填充
  18. 关于强化神兽(圣兽)DBC参数详解
  19. 如何获取维普免费账号--应对大家工作后在校外下载维普万方等全文
  20. 【python】利用python计算A类不确定度

热门文章

  1. Python玩转各种多媒体,视频、音频到图片
  2. make 和 make install 的区别
  3. UI upload多文件上传
  4. 句柄与指针的区别(一)
  5. 漫步数理统计二十八——混合分布
  6. 漫步线性代数二十三——行列式公式
  7. faster rcnn resnet_Faster-rcnn 代码详解
  8. java中集合(List)的嵌套分配值、移除等操作
  9. Opencv--CvMat声明和使用
  10. 计算机暑期实践相关内容,计算机暑假社会实践报告5000范文