28.Implement strStr() leetcode java

来源:互联网 发布:cms监控软件操作说明 编辑:程序博客网 时间:2024/06/07 21:36

题目:

Implement strStr().

Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

Example 1:

Input: haystack = "hello", needle = "ll"Output: 2

Example 2:

Input: haystack = "aaaaa", needle = "bba"Output: -1

在haystack找到子串needle,返回needle的第一个字符在haystack中的index,找不到则返回-1.

思路:

用i指向haystack,用j指向needle,比较i和j指向的字符:

①相等:如果j=needle.length,那么表示到这里needle已经遍历完,返回相应的位置,否则表示needle还没遍历完,那么i++,j++

②不相等:这个串到这里匹配失败,需要改变i和j的位置重新寻找,i需要指向haystack中刚刚被匹配的那个串的第二个字符i=i-j+1,j则需要指向needle的头,即j=0

时间复杂度为O(n)

public class Solution {    public int strStr(String haystack, String needle) {        if(needle.length()==0)            return 0;        char[] c1=haystack.toCharArray();char[] c2=needle.toCharArray();int i=0,j=0;while(i<c1.length&&j<c2.length){if(c1[i]==c2[j]){if(j==c2.length-1)return i-c2.length+1;else{                    i++;                    j++;                }}else{    i=i-j+1;    j=0;}}return -1;    }}


原创粉丝点击