leetcode 28. Implement strStr() 三种解法
来源:互联网 发布:linux环境变量配置 编辑:程序博客网 时间:2024/06/07 02:19
28. Implement strStr()
- Total Accepted: 119996
- Total Submissions: 467056
- Difficulty: Easy
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 int strStr(String haystack, String needle) { return haystack.indexOf(needle); }}
子串匹配解法:
public class Solution { public int strStr(String haystack, String needle) { int l1 = haystack.length(), l2 = needle.length(); if (l1 < l2) { return -1; } else if (l2 == 0) { return 0; } int threshold = l1 - l2; for (int i = 0; i <= threshold; ++i) { if (haystack.substring(i,i+l2).equals(needle)) { return i; } } return -1; }}
KMP解法:(真的解法)
public String strStr(String haystack, String needle) {//KMP algorithmsif(needle.equals("")) return haystack;if(haystack.equals("")) return null;char[] arr = needle.toCharArray();int[] next = makeNext(arr);for(int i = 0, j = 0, end = haystack.length(); i < end;){if(j == -1 || haystack.charAt(i) == arr[j]){j++;i++;if(j == arr.length) return haystack.substring(i - arr.length);}if(i < end && haystack.charAt(i) != arr[j]) j = next[j];} return null;}private int[] makeNext(char[] arr){int len = arr.length;int[] next = new int[len];next[0] = -1;for(int i = 0, j = -1; i + 1 < len;){if(j == -1 || arr[i] == arr[j]){next[i+1] = j+1;if(arr[i+1] == arr[j+1]) next[i+1] = next[j+1];i++;j++;}if(arr[i] != arr[j]) j = next[j];}return next;
0 0
- 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()
- 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()
- leetcode-28. Implement strStr()
- leetcode 28. Implement strStr()
- Solr6.0.1配置中文分词器mmseg4j
- A Committee of Neural Networks for Traffic Sign Classification 阅读笔记
- Windows 2008R2_DNS
- python结合G2绘制精美图形
- 【CDP-云设计模式】第7章,2.读副本模式(Read Replica Pattern)
- leetcode 28. Implement strStr() 三种解法
- Java对象的创建 —— new之后JVM都做了什么?
- Linux 启动服务的三种方式
- ajax实时刷新
- List与Set的基础知识
- 可视化工具--D3--案例分析--Chord Diagram
- IONIC WebApp之tabs框架样式修改
- 大数据系列修炼-Scala课程04
- PAT 乙级1014. 福尔摩斯的约会(C语言版)