LeetCode题解java算法: 28. 实现 strStr()

2021/4/19 1:25:22

本文主要是介绍LeetCode题解java算法: 28. 实现 strStr(),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实现 strStr() 函数。

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf()
定义相符。

示例 1:

输入:haystack = "hello", needle = "ll"
输出:2

示例 2:

输入:haystack = "aaaaa", needle = "bba"
输出:-1

示例 3:

输入:haystack = "", needle = ""
输出:0

暴力破解法:

class Solution {
    public int strStr(String haystack, String needle) {
        int h=haystack.length();
        int n=needle.length();
        for(int start=0;start<h-n+1;start++){
            if(haystack.substring(start,start+n).equals(needle)){
                return start;
            }
        }
        return -1;
    }
}

kmp算法:

class Solution {
   public int strStr(String haystack, String needle) {
       char [] h=haystack.toCharArray();
       char[] n=needle.toCharArray();
       int i=0;//设置主串的位置
        int j=0;//设置子串的位置
        while(i<h.length&&j<n.length){
            if(h[i]==n[j]){
                i++;
                j++;
            }else{
                i=i-j+1;
                j=0;
            }
        }
        if(j==n.length){
            return i-j;
        }else{
            return -1;
        }
    }
}


这篇关于LeetCode题解java算法: 28. 实现 strStr()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程