[LeetCode-interview algorithm classic-Java implementation] [028-Implement strStr () (Implement strStr () function)],-javastrstr
[028-Implement strStr () (Implement the strStr () function )][LeetCode-interview algorithm classic-Java implementation] [directory indexes for all questions]Original question
Implement strStr ().
Returns the index of the first occurrence of needle in haystack, or-1 if needle is not part of haystack.
Theme
Implement the strStr () function to determine the position of a string in another string. -1 is returned if no match exists.
Solutions
Implementation Using KMP Algorithm
Code Implementation
Algorithm Implementation class
public class Solution { public int strStr(String haystack, String needle) { if (haystack == null || needle == null) { return -1; } if (needle.length() > haystack.length()) { return -1; } if ("".equals(haystack)) { if ("".equals(needle)) { return 0; } else { return -1; } } else { if ("".equals(needle)) { return 0; } } return kmpIndex(haystack, needle); } private int kmpIndex(String haystack, String needle) { int i = 0; int j = 0; int[] next = 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; } else { return -1; } } private int[] next(String needle) { int[] next = new int[needle.length()]; next[0] = -1; int i = 0; int j = -1; int k = needle.length() - 1; while (i < k) { if (j == -1 || needle.charAt(i) == needle.charAt(j)) { ++i; ++j; if (needle.charAt(i) != needle.charAt(j)) { next[i] = j; } else { next[i] = next[j]; } } else { j = next[j]; } } return next; }}
Evaluation Result
Click the image. If you do not release the image, drag it to a position. After the image is released, you can view the complete image in the new window.
Note
Please refer to the following link for more information: http://blog.csdn.net/derrantcm/article/details/47052669]
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.