Implement strStr()

原題鏈接: http://oj.leetcode.com/problems/implement-strstr/

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

這題據說用KMP算法會是線性時間復雜度,但KMP實現起來有點復雜。這里用了簡單的brute force,復雜度O(mn)。
技巧是外層for循環只需要搜尋haystack-needle+1次。

已犯錯誤:

  1. i <= haystack.length() - needle.length()寫成了<號。這種情況想想極端情形,haystack-needle==0的情況就理解了。
  2.  if(needle.length()==0) return 0; 這條件是leetcode的testcase要求的。
    
    public int strStr(String haystack, String needle) {
        if (needle.length() > haystack.length()) return -1;
        if(needle.length()==0) return 0;
        for (int i = 0; i <= haystack.length() - needle.length(); i++) {
            int needleIndex = 0;
            int haystackIndex = i;
            while (needle.charAt(needleIndex) == haystack.charAt(haystackIndex)) {
                needleIndex++;
                haystackIndex++;
                if (needleIndex == needle.length()) {
                    return haystackIndex - needleIndex;
                }
            }
        }
        return -1;
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容