[Leetcode28]實現strStr()
阿新 • • 發佈:2018-11-30
實現 strStr() 函式。
給定一個 haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
當 needle
是空字串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。
對於本題而言,當 needle
是空字串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。
python:
class Solution: def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ p,q = len(haystack),len(needle) if q == 0: return 0 n = p - q if n < 0 or (n == 0 and haystack[0] != needle[0]): return -1 i,j = 0,0 while i < p: if haystack[i] == needle[j]: if j == (q - 1): return i - j else: i += 1 j += 1 else: i = i - j + 1 j = 0 return -1
C++:
class Solution { public: int strStr(string haystack, string needle) { int p = haystack.length();int q = needle.length();int n = p - q; if(q == 0) return 0; if(n < 0 || (n == 0 && haystack[0] != needle[0])) return -1; int i = 0;int j = 0; while(i < p){ if(haystack[i] == needle[j]){ if(j == (q - 1)) return i - j; else{ i += 1;j += 1; } } else{ i = i - j + 1;j = 0; } } return -1; } };