实现strStr()
题目描述:
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
说明:
当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
class Solution {
public:
int strStr(string haystack, string needle) {
if(needle.length() == 0) return 0;
if(haystack.length() == 0) return -1;
int result = -1;
bool end = false;
for(int i = 0 ; i<haystack.length()-needle.length()+1 && i<haystack.length() ;i++){
for(int j = 0 ; j<needle.length() ;j++){
if(haystack[i+j] == needle[j]){
if(j == needle.length()-1){
result = i;
end = true;
}
}else break;
}
if(end) break;
}
return result;
}
};
最外层遍历haystack字符串,然后再遍历needle字符串,比较needle中的每一个元素和haystack字符串元素,如果相等,则继续比较needle字符串的下一个字符,直至到最后一个元素也相等时,将result从-1设为最外层遍历的索引值,利用布尔变量end提前结束。