LeetCode刷題記錄_28. 實現strStr()
阿新 • • 發佈:2018-07-28
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()