LeetCode-28-Implement strStr()(字符串匹配)
来源:互联网 发布:2017java不好找工作了 编辑:程序博客网 时间:2024/06/09 15:53
Q:
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Analysis:
第一反应就是用基础的KMP算法来实现,也可用其他字符串匹配算法如BM等算法。
Code:
public class Solution { public static int[] getNextVal(String needle) { int[] next = new int[needle.length()]; next[0] = -1; int k = -1;// 前缀索引 int j = 0;// 后缀索引 while (j < needle.length() - 1) { //needle.charAt(k)表示前缀,needle.charAt(j)表示后缀 if (k == -1 || needle.charAt(j)==needle.charAt(k)) { ++k; ++j; next[j] = k; } else { k = next[k]; } } return next; } public int strStr(String haystack, String needle) { int i=0; int j=0; int hayLen=haystack.length(); int needLen=needle.length(); if(needLen==0){ return 0; } if (hayLen==0) { return -1; } int []next=getNextVal(needle); while(i<hayLen&&j<needLen){ if(j==-1||haystack.charAt(i)==needle.charAt(j)){ //①如果j = -1,或者当前字符匹配成功(即S[i] == P[j]),都令i++,j++ i++; j++; }else{ //②如果j != -1,且当前字符匹配失败(即S[i] != P[j]),则令 i 不变,j = next[j] //next[j]即为j所对应的next值 j=next[j]; } } if(j==needLen){ return i-j; }else{ return -1; } }}
阅读全文
0 0
- LeetCode-28-Implement strStr()(字符串匹配)
- [LeetCode]Implement strStr() 字符串匹配
- leetcode 字符串匹配Implement strStr()
- (LeetCode)Implement strStr() --- 匹配字符串
- [LeetCode-28] Implement strStr(KMP 字符串匹配)
- 【字符串匹配】Implement strStr()
- 字符串匹配Implement strStr()
- leetcode---implement-strstr---字符串
- Implement strStr() (匹配字符串问题,哈希解法) 【leetcode】
- 28.LeetCode Implement strStr()(meidum)[字符串 子串匹配]
- LeetCode: Implement strStr()(字符串匹配:Sunday算法)
- 【KMP&字符串匹配】Implement strStr()
- Implement strStr()--字符串匹配_kmp_bkdHash
- [LeetCode] Implement strStr()[字符串hash]
- LeetCode(28)Implement Strstr()
- [leetcode 28] Implement strStr()
- LeetCode[28]Implement strStr()
- leetcode-28 Implement strStr()
- 面试题:判断一个节点是否在一棵二叉树中
- android 权限请求工具类
- 排序
- 搭建http服务将本地项目库导入GitLab
- 停止jetty-maven-plugin
- LeetCode-28-Implement strStr()(字符串匹配)
- [小记]JAVA对URL中的字符串处理(分割,转码)
- 关于空间风靡的心理入侵小游戏浅析
- 约瑟夫环
- Java基础语法之多态
- 从一个git仓库迁移到另外一个git仓库
- Nginx缓存
- 用js实现登录的简单验证
- 栈与队列