實現 strStr() 函數。給定一個 haystack 字元串和一個 needle 字元串,在 haystack 字元串中找出 needle 字元串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。 示例 1:輸入: haystack = "hello", needle = "ll"輸出: ...
實現 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() 定義相符。
#include <iostream> using namespace std; int strStr(string haystack, string needle) { if(haystack.length()<needle.length()) return -1; if(haystack.length()==0||needle.length()==0) return 0; int ans=-1; for(int i=0;i<haystack.length()-needle.length()+1;i++) { if(haystack[i]==needle[0]) { int k; //ans=i; for(k=0;k<needle.length();k++) { if(haystack[i+k]!=needle[k]) {k=0;break;} } if(k==needle.length()) return i; } } return ans; } int main() { string s="mississippi"; string ss= "issip"; int ans=strStr(s,ss); std::cout << ans << std::endl; return 0; }