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

建设网站制作实训报告WordPress自助提交友情链接

建设网站制作实训报告,WordPress自助提交友情链接,淘宝官网电脑版网页,网站开发专业职业规划成败有时,不可丧志,山高路远,愿诸君扶摇直上 —— 24.3.20 找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始&…

成败有时,不可丧志,山高路远,愿诸君扶摇直上

                                                          —— 24.3.20

 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。

示例 1:

输入:haystack = "sadbutsad", needle = "sad" 输出:0 解释:"sad" 在下标 0 和 6 处匹配。 第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:
输入:haystack = "leetcode", needle = "leeto" 输出:-1 解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。

提示:

  • 1 <= haystack.length, needle.length <= 104
  • haystack 和 needle 仅由小写英文字符组成

方法一 暴力匹配法

思路及算法

我们可以让字符串 needle 与字符串 haystack 的所有长度为 m 的子串均匹配一次。

为了减少不必要的匹配,我们每次匹配失败即立刻停止当前子串的匹配,对下一个子串继续匹配。如果当前子串匹配成功,我们返回当前子串的开始位置即可。如果所有子串都匹配失败,则返回 −1。

class Solution {public int strStr(String haystack, String needle) {int n = haystack.length(), m = needle.length();for (int i = 0; i + m <= n; i++) {boolean flag = true;for (int j = 0; j < m; j++) {if (haystack.charAt(i + j) != needle.charAt(j)) {flag = false;break;}}if (flag) {return i;}}return -1;}
}

方法二 Knuth-Morris-Pratt算法        KMP算法

思路及算法

KMP算法,先求出最长公共前后缀,然后通过KMP算法找出最长子串,然后判断是否存在最长子串,若子串全部都匹配,则返回匹配处的下标

力扣官方题解:

作者:宫水三叶
链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/solutions/575568/shua-chuan-lc-shuang-bai-po-su-jie-fa-km-tb86/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

class Solution {// KMP 算法// ss: 原串(string)  pp: 匹配串(pattern)public int strStr(String ss, String pp) {if (pp.isEmpty()) return 0;// 分别读取原串和匹配串的长度int n = ss.length(), m = pp.length();// 原串和匹配串前面都加空格,使其下标从 1 开始ss = " " + ss;pp = " " + pp;char[] s = ss.toCharArray();char[] p = pp.toCharArray();// 构建 next 数组,数组长度为匹配串的长度(next 数组是和匹配串相关的)int[] next = new int[m + 1];// 构造过程 i = 2,j = 0 开始,i 小于等于匹配串长度 【构造 i 从 2 开始】for (int i = 2, j = 0; i <= m; i++) {// 匹配不成功的话,j = next(j)while (j > 0 && p[i] != p[j + 1]) j = next[j];// 匹配成功的话,先让 j++if (p[i] == p[j + 1]) j++;// 更新 next[i],结束本次循环,i++next[i] = j;}// 匹配过程,i = 1,j = 0 开始,i 小于等于原串长度 【匹配 i 从 1 开始】for (int i = 1, j = 0; i <= n; i++) {// 匹配不成功 j = next(j)while (j > 0 && s[i] != p[j + 1]) j = next[j];// 匹配成功的话,先让 j++,结束本次循环后 i++if (s[i] == p[j + 1]) j++;// 整一段匹配成功,直接返回下标if (j == m) return i - m;}return -1;}
}

http://www.dtcms.com/wzjs/803883.html

相关文章:

  • 自适应网站案例使用wordpress标签库
  • 中国风电商网站建设学校怎么做网站
  • 南京做网站公司 雷仁建立一个平台网站需要多少钱
  • 专业简历制作网站推荐宣传片视频创意
  • 做网站用php桂林做网站的公司哪家最好
  • 网站后台是怎么更新wordpress为什么好卡
  • 网站logo做h1标签做个简单的网站
  • 网站建设应列支什么科目安徽合肥发现1例阳性
  • 石家庄百度推广家庄网站建设企业免费邮箱
  • 邯郸市城市建设局网站沧州网站建设建站系统
  • 英文外贸网站建设网站设计方案网站建设z亿玛酷1订制
  • 甘肃省建设社厅网站vs2010网站开发示例
  • 网站推广基本方法是网站 购买
  • 重庆网站公司推荐什么站做咨询网站好
  • 汕头中文建站模板深圳市信用网
  • 有哪些做平面设计好的网站济南市莱芜区招聘信息
  • 网站开发层次wordpress壁纸小程序
  • 广州化妆品网站建设公司途牛旅游网
  • 深圳网站建设公司盛世华彩松岗做网站联系电话
  • 网站综合营销方案设计杭州做网站软件
  • 商务网站建设内容如何做网络网站推广
  • 著名网站用什么语言做后台正能量网站入口地址
  • 购物类网站建设无锡市工程造价信息网
  • 一起做网店潮汕站网站开发课程安排
  • 网站改版中 模板搜公司名到公司的网站
  • 郓城网站建设电话如何建立自己的商城
  • redis wordpress缓存郑州百度seo排名公司
  • 德清建设银行网站网站发送邮件功能
  • 班级网站建设html制作免费高清视频素材网站有哪些
  • 像京东一样的网站国外那些视频网站做的不错