<p>Implement <a href="http://www.cplusplus.com/reference/cstring/strstr/" target="_blank">strStr()</a>.</p> <p>Given two strings <code>needle</code> and <code>haystack</code>, return the index of the first occurrence of <code>needle</code> in <code>haystack</code>, or <code>-1</code> if <code>needle</code> is not part of <code>haystack</code>.</p> <p><strong>Clarification:</strong></p> <p>What should we return when <code>needle</code> is an empty string? This is a great question to ask during an interview.</p> <p>For the purpose of this problem, we will return 0 when <code>needle</code> is an empty string. This is consistent to C's <a href="http://www.cplusplus.com/reference/cstring/strstr/" target="_blank">strstr()</a> and Java's <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)" target="_blank">indexOf()</a>.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> haystack = "hello", needle = "ll" <strong>Output:</strong> 2 </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> haystack = "aaaaa", needle = "bba" <strong>Output:</strong> -1 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= haystack.length, needle.length <= 10<sup>4</sup></code></li> <li><code>haystack</code> and <code>needle</code> consist of only lowercase English characters.</li> </ul>