1. 程式人生 > >LeetCode刷題記錄_28. 實現strStr()

LeetCode刷題記錄_28. 實現strStr()

href doc tac leet 題目 blank aaa ack i++

題目:

實現 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) {
        //我只是想試一下。。太扯淡了,這都行。。。。?
        // return haystack.indexOf(needle);
        int subLen = needle.length();
        int len = haystack.length();
        for(int i=0;i<=len-subLen;i++){
            if(haystack.substring(i,i+subLen).equals(needle))
                return i;
        }
        
        return -1;
        
    }
}

註釋部分笑死我了,哈哈哈,這道題目其實就是實現了一個indexOf()的功能,直接return一個indexOf能算錯嗎?答案中確實有很多人這麽寫的。

我的思路是用substring和equals來解題,對我來說循環結束條件的判斷是最難的,每次都是弄兩個特殊的數,比如2,3帶進去看看,然後才能確定結束條件,測試用例中應該沒有null的傳遞,至於空字符串由於substring(0,0)本身可以代表空字符串,所以無需做特殊判斷

LeetCode刷題記錄_28. 實現strStr()