1. 程式人生 > >判斷一個字串是否是另一個字串的子串(Implement strStr() )

判斷一個字串是否是另一個字串的子串(Implement strStr() )

問題描述:

這是演算法中比較經典的問題,判斷一個字串是否是另一個字串的字串。

思路:

這個題目最經典的演算法應該是KMP演算法,KMP演算法是最優的線性演算法,複雜度已經達到了這個問題的下線。但是KMP演算法的過程比較複雜,在面試過程中很難在很短的時間內實現,所以在一般的面試中很少讓實現KMP演算法。

程式碼實現:

class Solution {
public:
    int strStr(string haystack, string needle) {
        int i, j;
        for (i = j = 0; i < haystack.size() && j < needle.size();) {
            if (haystack[i] == needle[j]) {
                ++i; ++j;
            } else {
                i -= j - 1; j = 0;
            }
        }
        return j != needle.size() ? -1 : i - j;
    }
};