1. 程式人生 > >(LeetCode每日一刷10)實現 strStr() 函式

(LeetCode每日一刷10)實現 strStr() 函式

題目描述:

給定一個 haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回  -1

 

示例:

示例 1:

輸入: haystack = "hello", needle = "ll"
輸出: 2

示例 2:

輸入: haystack = "aaaaa", needle = "bba"
輸出: -1

說明:

當 needle 是空字串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。

對於本題而言,當 needle

 是空字串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。

 

我提交的程式碼:

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