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

慈溪建设公司网站网络公关公司危机公关

慈溪建设公司网站,网络公关公司危机公关,短网址工具,网站后台密码怎么修改28. 找出字符串中第一个匹配项的下标 题目链接&#xff1a;28. 找出字符串中第一个匹配项的下标 思路1&#xff1a;先来写一下暴力解法。 时间复杂度O(n*m) class Solution {public int strStr(String haystack, String needle) {// 暴力解法先来一遍for (int i 0; i <…

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

题目链接:28. 找出字符串中第一个匹配项的下标

思路1:先来写一下暴力解法。

时间复杂度O(n*m)

class Solution {public int strStr(String haystack, String needle) {// 暴力解法先来一遍for (int i = 0; i < haystack.length(); i++) {if (i + needle.length() > haystack.length()) return -1;boolean targ = true;for (int j = 0; j < needle.length(); j++) {if (needle.charAt(j) != haystack.charAt(i + j)) {targ = false;}}if (targ) {return i;}}return -1;}
}

思路2:kmp

算法原理:通过前缀表(即next数组)来记录模式串与主串不匹配时,模式串应当从那里开始重新匹配。重点在于求解前缀表(即next数组)。next数组每个位置的值,就是从开始到当前位置的字符串的最长公共前缀(最长相等前缀)。一旦模式串与主串不匹配时,next数组当前位置的前一个位置的元素就是模式串要回退到的位置。

实现方法:先求解next数组,分为四步:

① 初始化,j指向前缀末尾位置,i指向后缀末尾位置;

② 当前后缀不相同时,前缀末尾进行回退;

③ 当前后缀相同时,前缀末尾加一;

④ next数组赋值。

然后根据next数组完成模式串与主串的匹配。

时间复杂度O(n+m)

class Solution {public int strStr(String haystack, String needle) {// kmp实现int[] next = getNext(needle);int j = 0;for (int i = 0; i < haystack.length(); i++) {while (j > 0 && haystack.charAt(i) != needle.charAt(j)) {// 如果不匹配,对模式串进行回退j = next[j - 1];}if (haystack.charAt(i) == needle.charAt(j)){// 如果当前元素匹配,继续匹配下一个元素j++;}if (j == needle.length()){// 如果模式串的所有元素都匹配完了,说明匹配成功,直接返回。// return i + 1 - needle.length();return i - j + 1;}}return -1;}private int[] getNext(String s) {int[] next = new int[s.length()];// 初始化,j指向前缀末尾位置,i指向后缀末尾位置int j = 0;next[0] = 0;for (int i = 1; i < next.length; i++) {// 当前后缀不相同时,前缀末尾进行回退while (j > 0 && s.charAt(i) != s.charAt(j)) {j = next[j - 1];}// 当前后缀相同时,前缀末尾加一if (s.charAt(i) == s.charAt(j)) {j++;}// next数组赋值next[i] = j;}return next;}
}

思路3:字符串哈希。相当于记模板了,贴一下原博客链接。字符串哈希,帮您解决记不住kmp的烦恼~


http://www.yayakq.cn/news/38545/

相关文章:

  • 综述题建设网站需要几个步骤企业网站建设发展历程
  • 深圳网页设计网站制作dz网站开发
  • 企业平台网站建设方案职业学院网站建设
  • 西安网站手机网站建设深入网站开发和运维
  • 视频模板在线制作网站国外设计学院网站
  • 深圳网站设计招聘网站首页设计大赛
  • 大数据网站建设怎么找企业做网站
  • 建设众筹类网站重庆市造价工程信息网官网
  • 武威 网站开发企业管理名词解释
  • 无锡网络公司无锡网站推广开发wap网站 转
  • 网站销售系统网站界面技术方案
  • 建设网站的重要性店面设计餐饮
  • 禹州网站建设网站文件保护怎么做
  • 个人网站需要多少钱高校网站建设的问题及对策
  • 温州市城市基础设施建设网站上海网站营销seo方案
  • 成都彩蝶花卉网站建设案例某网站搜索引擎优化
  • 做网站临沂ui设计师作品集网站
  • 河南旅游集团 网站建设代驾app软件开发公司
  • 济宁公司做网站恒通建设集团有限公司网站
  • 网站优化主要工作有那些内容苏州市住房和城乡建设局官方网站
  • 平面广告设计师的工作内容外贸seo网站建站
  • 四位一体网站开发wordpress无法修改主题
  • 工业风 网站建设国家建设材料检测网站
  • 免费申请域名的网站杭州市西湖区建设局网站
  • 电商网站设计图片素材网页制作与网站建设》在线作业 答案
  • 试客类网站开发苗木网站怎么做
  • 岷县城乡建设局网站惠州抖音seo
  • 投资 公司 网站模板制定网站建设方案
  • 音乐网站模板下载购物网站建设 属于信息系统管理与设计么?
  • 大学生建设网站手机网站自助建站