【leetcode算法-简单】28. 实现strStr
【题目描述】
实现 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() 定义相符。
【解答】
- 解法一:利用split函数分割
分割完之后的返回值是一个列表 l ,如果haystack中有needle,则 l[0]的长度就是needle第一次出现的位置
eg1:haystack = 'xxxzyn'
needle = 'zyn'
l = haystack.split(needle,1) 分割一次
l = ['xxx','zyn']
len(l[0]) = 3
即needle第一次出现的位置为3
eg2:haystack = 'xxxzyn'
needle = 'not'
l = haystack.split(needle,1) 分割一次
l = ['xxxzyn']
len(l) =1
根据 if-else 判断题条件,返回-1
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if not needle: return 0
l = haystack.split(needle,1)
if len(l) == 1:
return -1
else:
return len(l[0])
执行用时:40ms
- 解法二:在haystack中遍历查找长度为len(needle)的索引范围
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if not needle: return
n1=len(haystack)
n2=len(needle)
for i in range(n1-n2+1):
if haystack[i:i+n2]==needle:
return i
return -1
执行用时:36ms
【leetcode算法-简单】28. 实现strStr的更多相关文章
- leetCode练题——28. Implement strStr()
1.题目 28. Implement strStr()——Easy Implement strStr(). Return the index of the first occurrence of ne ...
- 【leetcode算法-简单】1.两数之和
[题目描述] 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...
- 【leetcode❤python】 28. Implement strStr()
#-*- coding: UTF-8 -*- #题意:大海捞刀,在长字符串中找出短字符串#AC源码:滑动窗口双指针的方法class Solution(object): def strStr(se ...
- Leetcode题库——28.实现strStr()
@author: ZZQ @software: PyCharm @file: strStr.py @time: 2018/11/6 20:04 要求:给定一个 haystack 字符串和一个 need ...
- LeetCode记录之28——Implement strStr()
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- 【leetcode算法-简单】7.整数反转
[题目描述] 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321 示例 3: 输入: 12 ...
- 【leetcode算法-简单】66. 加一
[题目描述] 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...
- 【leetcode算法-简单】58. 最后一个单词的长度
[题目描述] 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输 ...
- 【leetcode算法-简单】9. 回文数
[题目描述] 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解释: ...
随机推荐
- Cogs 461. [网络流24题] 餐巾(费用流)
[网络流24题] 餐巾 ★★★ 输入文件:napkin.in 输出文件:napkin.out 简单对比 时间限制:5 s 内存限制:128 MB [问题描述] 一个餐厅在相继的N天里,第i天需要Ri块 ...
- qsing
qsing1 1.低仿机器人 一道大模拟 2.放爆竹 小辉原本想让小明告诉他,如果同时点燃n串雷,最多会有多长的时间至少有两串雷爆炸的声音是一样的. 但是小辉觉得这个问题真是太简单了,所以决定问小明, ...
- fgetc,getc,fputc,putc,putchar,getchar
转自 http://blog.csdn.net/todd911/article/details/8952565 输入输出函数家族 家族名 目的 ...
- vue学习--vue项目端口不固定,无法指定问题
写于20190819 前面是自己解决的思路,后面是解决方法以及需要记住的一些更改 package.json 之前只知道vue项目是基于node.js,对node.js了解不是很深入,项目的开始文件是p ...
- Linux下java环境变量配置
安装步骤 1.查看当前Linux系统是否安装java rpm -qa | grep java 2.卸载系统中已经存在的openJDK rpm -e --nodeps java--openjdk-1.7 ...
- 持续api管理翻译
- 书籍内容 > 地址: https://www.safaribooksonline.com/library/view/continuous-api-management/97814920435 ...
- PaintCode 教程:矢量图轻松转换成CoreGraphics代码
本文译自Ranwenderlich的这篇:http://www.raywenderlich.com/100281/paintcode-for-designers-getting-started Pai ...
- Spring MVC 三大组件
㈠ HandlerMapping 处理器映射(一般通过扫描包配置) 通过处理器映射,你可以将Web 请求映射到正确的处理器 Controller 上.当接收到请求时,DispactherServlet ...
- Java 面向对象(四)
代码块 什么是代码块 在类中或方法当中 使用 { } 括起来的一段代码,就称它是一个代码块. 在代码块当中定义的变量我们称是局部变量,在外面是没有办法使用的.这里定义的 a 就是一个局部变量. 代码块 ...
- oracle利用触发器实现将ddl操作存入数据表中
先创建DDL数据库事件操作表: create table ddl_event( sys_time date primary key, event_name ), ), obj_type ), obj_ ...