LeetCode--28. Implement strStr()
阿新 • • 發佈:2018-12-08
這個是個easy的題目,首先想到直接用String.indexOf()方法直接求,但覺得很恥辱!!!於是有了如下思路:遍歷整個文字串(長度為m),比對文字串字母與目標串(長度為n)首字母是否相同,如果相同就檢查模式串後面的字母是否相同,但是越簡單的題目越容易有小bug,尤其這裡面兩個迴圈裡的的break處理的有點大意了。這個思路非常普通,時間複雜度O(mn)。KMP演算法應該是最優的結果。
class Solution { public int strStr(String haystack, String needle) { if(needle.length()==0) return 0; int patlen=needle.length(); int txtlen=haystack.length(); if(patlen>txtlen) return -1; for(int i=0;i<haystack.length();i++) { if(haystack.charAt(i)==needle.charAt(0)) { if(i+patlen-1>=txtlen) return -1; int j=1; for(;j<patlen;j++) { if(haystack.charAt(i+j)!=needle.charAt(j)) break; } if(j==patlen) return i; } } return -1; } }