Leetcode题解 28. Implement strStr()
来源:互联网 发布:域名注册申请 编辑:程序博客网 时间:2024/05/20 16:08
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
解法一:(暴力法)
public class Solution { public static int strStr(String haystack, String needle) { int m = haystack.length(); int n = needle.length(); if(m==0&&n==0) return 0; else if(m==0&&n!=0) return -1; else if(m!=0&&n==0) return 0; for(int i = 0; i <= m-n; i ++) { int j; for(j = 0; j < n; j ++) { if(haystack.charAt(i+j) == needle.charAt(j)){ if(j == n-1) return i; } else break; } } return -1; }}
解法二:(KMP算法)
public class Solution { static int strStr(String haystack, String needle) { int hlen = haystack.length(); int nlen = needle.length(); if(hlen==0&&nlen==0) return 0; else if(hlen==0&&nlen!=0) return -1; else if(hlen!=0&&nlen==0) return 0; int[] next = new int[nlen]; getNext(needle, next); int i = 0; int j = 0; while (i < hlen && j < nlen) { if (j == -1 || haystack.charAt(i) == needle.charAt(j)) {// match current position, go next i++; j++; } else {// jump to the previous position to try matching j = next[j]; } } if (j == nlen) // all match return i - nlen; else return -1; } private static void getNext(String needle, int next[]) {// self match to contruct next array int nlen = needle.length(); int j = -1; // slow pointer int i = 0; // fast pointer next[i] = -1; //init next has one element while (i < nlen - 1) { if (j == -1 || needle.charAt(i) == needle.charAt(j)) { j++; i++; //thus the condition (i < nlen-1) next[i] = j; //if position i not match, jump to position j } else { j = next[j]; //jump to the previous position to try matching } } }}
0 0
- Leetcode题解 28. Implement strStr()
- LeetCode题解:Implement strStr()
- LeetCode题解:Implement strStr()
- [LeetCode]28.Implement strStr()
- LeetCode --- 28. Implement strStr()
- LeetCode 28.Implement strStr()
- [Leetcode] 28. Implement strStr()
- 【leetcode】28. Implement strStr()
- [leetcode] 28.Implement strStr()
- Leetcode-28.Implement strStr()
- 28. Implement strStr() LeetCode
- leetcode 28. Implement strStr()
- [LeetCode]28. Implement strStr()
- leetcode 28. Implement strStr()
- Leetcode 28. Implement strStr()
- leetcode 28.Implement strStr()
- LeetCode *** 28. Implement strStr()
- LeetCode 28. Implement strStr()
- 学习正则表达式【一】
- React Native Android环境搭建
- C#基础(json解析)
- Codeforces Round #309 (Div. 2) D 构造
- SQLServer 复杂存储过程并发优化(案例)
- Leetcode题解 28. Implement strStr()
- ISO8583报文协议详解
- JsonObject 解析 json
- Ain_EditPlus配置安装教程
- AndroidStudio安装与Genymotion模拟器
- 备份数据库
- GStreamer详解1 hello world
- 2-SAT
- using libnet to send igmp join packet.