(函式)實現strstr函式

Kobe10發表於2017-02-04
  • 題目:實現strstr函式。
  • 這個函式原型 strstr(char *a, char *b),在a中是否包含b這個字串,包含返回第一個子串的位置,否則返回NULL。
  • 思路:其實這個就是找子串的問題。特殊情況,當b為空的時候,直接返回a;當b不為空的時候,指定start指標,通過兩次迴圈,逐一對strstr中的子串和b進行匹配,如果b走到末尾,表示找到,start指標指向開始位置,否則start繼續往前,

    例子:abcdefg    bcd  
            start指向a的位置,  將abcdefg和bcd比較   ->否
            start前進,指向b的位置,  將bcdefg和bcd比較  -> 是   返回start指標。

  • 程式碼
    class Solution {
    public:
        char *strStr(char *haystack, char *needle) {
            if (!*needle)
                return haystack;
            char *start = haystack;
            char *temp1 = haystack, *temp2 = needle;
            while (*start){
                temp1 = start;
                temp2 = needle;
                while (*temp2 && temp1 && !(*temp2 - *temp1))
                    temp2++, temp1++;
                if (!*temp2)
                    return start;
                start++;
            }
            return NULL;
        }
    };

     

相關文章