# [daily leetcode] realizes strStr()

Implement the strStr() function.
Given a haystack string and a needle string, find the first place (starting from 0) where the needle string appears in the haystack string. If not, returns - 1.
Example 1:
Input: haystack = "hello", needle = "ll"
Output: 2
Example 2:
Input: haystack = "aaaaa", needle = "bba"
Output: -1
Explain:
When need is an empty string, what value should we return? This is a good question in an interview.
For this problem, we should return 0 when need is an empty string. This matches the C language's strstr() and Java's indexOf() definitions.
Method 1:

```class Solution {
public:
int strStr(string haystack, string needle) {
if(needle.empty())
return 0;
if(haystack.length()<needle.length())
return -1;
int flag=1,p;
for(int i=0;i<haystack.length()-needle.length()+1;i++)
{
p=i;
for(int j=0;j<needle.length();j++)
{
if(haystack[p++]!=needle[j])//Mismatch
{
flag=0;
break;
}
flag=1;//matching
}
if(flag==1)
return i;
}
return -1;
}
};
```

Method 2: use substr to get the substring with the specified length and position

```class Solution {
public:
int strStr(string haystack, string needle) {
if(needle == "")
return 0;
if(haystack.size() < needle.size())
return -1;
int p;
for(int i = 0;i < haystack.size()-needle.size()+1;++i)
{
if(haystack.substr(i,needle.size()) == needle)
return i;
}
return -1;
}
};
```

Knowledge supplement:
Do this problem to know that c + + and strstr function, used to find the location of the first occurrence of a string, return a pointer.
Archetype:

```    const char * strstr ( const char * str1, const char * str2 );
char * strstr (       char * str1, const char * str2 );
```

Usage:

```#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char *s="1234abcd";
char *sb1="34a";
int p;
p=strstr(s,sb1)-s;
cout<<p;
return 0;
}
```

Output 2

Keywords: Java C

Added by PLaT on Thu, 26 Dec 2019 21:53:34 +0200