标签:
问题描述:
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 ifneedle is not part of haystack.
Update (2014-11-02):
The signature of the function had been updated to returnthe index instead of the pointer. If you still see your functionsignature returns a char * or String, please click the reload button toreset your code definition.
问题分析:KMP算法,Java里面字符串要注意判断null以及是否为空字符串;
优化的nextval算法见:http://blog.csdn.net/woliuyunyicai/article/details/44622573
代码:
public class Solution { public int strStr(String haystack, String needle) { if(haystack == null || needle == null) return -1; //注意初始化条件 int i = -1; int j = -1; int[] next = get_next(needle); while(i < haystack.length() && j < needle.length()) { if(j == -1 || haystack.charAt(i) == needle.charAt(j)) { ++i;++j; } else { j = next[j]; } } //判断是否匹配成功 if(j >= needle.length()) return i - j; return -1; } //next[j]计算函数 private int[] get_next(String needle) { if(needle.length() == 0) return null; int[] next = new int[needle.length()]; //初始化 next[0] = -1; int i = 0; int j = -1; while(i < needle.length() - 1) { if(j == -1 || needle.charAt(i) == needle.charAt(j)) next[++i] = ++j; else j = next[j]; } return next; } }
leetcode-28 Implement strStr()
标签:
原文地址:http://blog.csdn.net/woliuyunyicai/article/details/45476649