当前位置: 首页 > news >正文

科技类网站风格义乌 网站制作

科技类网站风格,义乌 网站制作,做网站赚钱好难,云主机如何建网站28 实现 strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack “hello”, needle “ll” 输出: 2 示例…

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

思路

首先是模式串匹配问题,需要先在hatstack(文本串)中找到needle子串(模式串),然后再去考虑求这个索引。第一个问题就涉及到KMP算法。KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。
以下代码随想录文字详细说明了KMP算法:
https://www.programmercarl.com/0028.%E5%AE%9E%E7%8E%B0strStr.html#%E6%80%9D%E8%B7%AF

解法一-前缀表(减一)

class Solution(object):# 第一步 首先要求next数组def getNext(self, next, s): # s表示模式串# 初始化j = -1next[0] = jfor i in range(1, len(s)): # 注意i从1开始 因为要比较 i 和 j是否相同# 前后缀不相同 while j>=0 and s[i]!=s[j+1]:j = next[j] # j回退# 前后缀相同if s[i]==s[j+1]:j += 1 # i和j都加1next[i] = j# 第二步 求下标索引def strStr(self, haystack, needle):""":type haystack: str:type needle: str:rtype: int"""if not needle:return 0next = [0]*len(needle) # 初始化nextself.getNext(next, needle)j = -1for i in range(len(haystack)):while j >= 0 and haystack[i]!=needle[j+1]: # j+1是因为j初始值为-1j = next[j] # next数组起作用了 找下一个匹配的位置if haystack[i]==needle[j+1]: # 匹配到字符相同j += 1# 判断在文本串里出现了模式串if j == len(needle) - 1:return i - len(needle) + 1 # 返回索引return -1

暴力法

class Solution(object):def strStr(self, haystack, needle):""":type haystack: str:type needle: str:rtype: int"""m, n = len(haystack), len(needle)for i in range(m):if haystack[i:i+n] == needle:return ireturn -1   

使用index(写算法题不推荐)

class Solution:def strStr(self, haystack: str, needle: str) -> int:try:return haystack.index(needle)except ValueError:return -1

使用find(写算法题不推荐)

class Solution:def strStr(self, haystack: str, needle: str) -> int:return haystack.find(needle)
http://www.yayakq.cn/news/99961/

相关文章:

  • 绥化市建设局网站电商网名大全
  • vps网站目录权限设置天津建设集团网站
  • 网站优化需要做什么那些网站做的比较好
  • 做古玩生意哪些网站好品牌网站建设福州
  • crm网站推荐wordpress自动建议搜索引擎不抓取
  • 太原定制网站制作流程免费网站建设ppt模板
  • 网站建设 客户要退款工厂管理系统软件
  • 电子商务网站有哪些功能招聘网站可以同时做两份简历吗6
  • 公司网站流程和费用网站备案后有什么好处
  • 专门做娱乐场所的设计网站专业网页设计师
  • 如何做推广自己网站江西鄱阳专业做网站
  • 龙岗区网站建设哪个公司好免费的招标网站有哪些
  • 北京网站平台开发网站建设 不需要见面
  • 网站维护费计入什么科目wordpress有赞支付宝
  • 网站增加新闻功能上海到北京飞机航班查询
  • 哈工大 网站开发建筑方面的网站
  • 广州天河区网站设计公司上海做网站哪家公司好
  • 模板网站配置文件高校网站建设滞后
  • 沈阳专业做网站方案商业图片素材网站
  • 如何宣传自己的网站沈阳建网站的公司
  • 浏览网站内下载文件新浪博客怎样上传wordpress
  • 广州天河区建设网站设计网站大全下载
  • 网站打开wordpresswordpress 列表样式
  • 建站工具 风铃成都百度网站排名优化
  • 微网站模板代码如何做好营销
  • 做网站设计师工资多少网站横幅图片
  • 做企业网站市场分析text-indent:2em wordpress
  • 建设直播网站需要多少钱牛商网专注营销型网站建设
  • 有关网站开发的文献南京网络推广
  • 网站建设新闻稿新西兰网站后缀