Leetcode 28 实现strStr()

2019-11-05  本文已影响0人  hekirakuno

实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:
输入: haystack = "hello", needle = "ll"
输出: 2
示例 2:
输入: haystack = "aaaaa", needle = "bba"
输出: -1
说明:
当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

思路:首先把两个字符串拆成字符数组。然后循环匹配。

class Solution {
    public int strStr(String haystack, String needle) {
    if(needle.length()>haystack.length()||needle==null){
        return -1;
    }
    if(needle.length()==0){
        return 0;
    }
    char[] needles = needle.toCharArray();
    char[] haystacks = haystack.toCharArray();
    
    int indexH = 0;
    int count = 0;
    int ansIndex = -1;
    for(int i = 0;i<haystacks.length-needles.length+1;i++){
//不用写这么多其实,可用这个直接判断 if (haystack.substring(i, i+needles.length).equals(needle)) return i;
        for(int j = 0;j<needles.length;j++){
            if(haystacks[i+(indexH++)]==needles[j]){
                count++;
            }else{
                indexH = 0;
                count=0;
                break;
            }
        }
        if(count==needles.length){
            ansIndex = i;
            break;
        }   
    }
    return ansIndex;
}
}
上一篇 下一篇

猜你喜欢

热点阅读