Question: Implement strStr (). returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack. anwser 1: O (n * m) [cpp] class Solution {public: char * strStr (char * haystack, char * needle) {// Start typing your C/C ++ solution below // do not write int main () function int haylen = strlen (haystack); int needlen = strlen (needle ); for (int I = 0; I <= haylen-need Len; I ++) {char * p = haystack + I; char * q = needle; while (* q! = '\ 0') {if (* p! = * Q) {break;} else {p ++; q ++ ;}} if (* q = '\ 0') {return haystack + I ;}} return NULL ;}; an%2: O (n + m) KMP [cpp] class Solution {public: char * strStr (char * haystack, char * needle) {// Start typing your C/C ++ solution below // do not write int main () function int haylen = strlen (haystack); int needlen = strlen (needle ); int * fail = new int [needlen]; memset (fail,-1, needlen * sizeof (int) ); // Strlen (fail) int I, j, k; for (I = 1; I <needlen; ++ I) {for (k = fail [I-1]; k> = 0 & needle [I]! = Needle [k + 1]; k = fail [k]); if (needle [k + 1] = needle [I]) fail [I] = k + 1;} I = j = 0; while (I