# [Implement strStr()][title] ## Description Implement [strStr()](http://www.cplusplus.com/reference/cstring/strstr/). Return the index of the first occurrence of needle in haystack, or **-1** if needle is not part of haystack. **Example 1:** ``` Input: haystack = "hello", needle = "ll" Output: 2 ``` **Example 2:** ``` Input: haystack = "aaaaa", needle = "bba" Output: -1 ``` **Clarification:** What should we return when `needle` is an empty string? This is a great question to ask during an interview. For the purpose of this problem, we will return 0 when `needle` is an empty string. This is consistent to C's [strstr()](http://www.cplusplus.com/reference/cstring/strstr/) and Java's [indexOf()](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)). Tags:** Two Pointers, String ## 思路 题意是从主串中找到子串的索引,如果找不到则返回-1,当子串长度大于主串,直接返回-1,然后我们只需要遍历比较即可。 ```java class Solution { public int strStr(String haystack, String needle) { int l1 = haystack.length(), l2 = needle.length(); if (l1 < l2) return -1; for (int i = 0; ; i++) { if (i + l2 > l1) return -1; for (int j = 0; ; j++) { if (j == l2) return i; if (haystack.charAt(i + j) != needle.charAt(j)) break; } } } } ``` ## 结语 如果你同我一样热爱数据结构、算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:[awesome-java-leetcode][ajl] [title]: https://leetcode.com/problems/implement-strstr [ajl]: https://github.com/Blankj/awesome-java-leetcode