Blankj/awesome-java-leetcode

_028#优化建议

bolen76 opened this issue · 0 comments

public int strStr(String haystack, String needle) {
    int l1 = haystack.length(), l2 = needle.length();
    if (l1 < l2) return -1;
    for (int i = 0; ; i++) {
        //if(i+l2>l1)return -1;
        for (int j = 0; ; j++) {
            if (j == l2) return i;
            **if (i + j == l1) return -1;**
            if (haystack.charAt(i + j) != needle.charAt(j)) break;
        }
    }
}

使用第5行取代第8行,减少循环次数。
假如needle只有最后一个字符不同,原代码几乎需要把needle遍历完才进入第8行的分支