Given two strings, haystack and needle, find the index of the first occurrence of the needle within the haystack. If not found, return -1.
Note: Do not use String's substring method. The efficient way would be to make use of Knuth-Morris-Pratt algorithm. The index returned should be zero based.