题目
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
题意
从字符串haystack找到字符串needle第一次出现的首地址。
思路
基本思路:
原字符串指针逐步递增,每指向一个字符,从当前字符进行比较。
class Solution {
public:
int strStr(string haystack, string needle)
{
int i=0,j=0, flag = 0;
if(needle.size() == 0)
return 0;
for(i=0; i<haystack.size(); i++)
{
for(j=0; j<needle.size(); j++)
{
if(needle[j] != haystack[i+j])
break;
}
if(j == needle.size())
{
flag = 1;
break;
}
}
if(flag == 1)
return i;
else
return -1;
}
};
时间复杂度O(n*n)
超时
**然后想到C++ Stl库有一个函数find():
find()函数功能:查找第一次出现的目标字符串的首地址,不存在返回-1
- 时间复杂度:find复杂度是O(N*M) 朴素的算法O(N*M) 朴素的算法。
代码十分简单:
C++语言
class Solution {
public:
int strStr(string haystack, string needle)
{
return haystack.find(needle);
}
};
Python语言
class Solution(object):
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
return haystack.find(needle)