今天做这道!!
就在刚刚我不小心误触了鼠标的返回键导致打了好久的字都无了...心态崩了...

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2

示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-strstr
  u1s1 看到这类题目我第一想法是用数组...

思路:
  在说明思路之前,暂且将haystack字符串定义为A字符串,needle字符串定义为B字符串!
  看到题目的第一想法是将A字符串拆分,拆分之后和B字符串比较是否相等,在这里拆分字符串用到了String中的方法:substring,比较方法equals,以及取字符串长度 String中的方法 length!(虽然过程很曲折但是最后还是自以为是的解决了所有问题!)
过程:
  在这里需要考虑到使用字符串A拆分出来的子串应该与字符串B的长度相同,不然没有可比性,其次就是规定拆分的起点和终点问题,(return 返回不用说了吧!)以下是ac(巨渣)代码仅供参考!想要更好更快的解决方法还是要看一看题解模块..

class Solution {
    public int strStr(String haystack, String needle) {
        int count_h = haystack.length();
        int count_n = needle.length();
        if (count_n == 0) return 0;
//        System.out.println("haystack的长度"+count_h);
//        System.out.println("needle的长度: "+count_n);
//        System.out.println(count_h-count_n);
        for (int i = 0; i <= count_h - count_n; i++) {
//            System.out.println("我进来了!");
//            System.out.println("i: "+i+" ");
            if (haystack.substring(i, count_n + i).equals(needle)) {
                return i;
            }
        }
        return -1;
    }
}

图片说明

  对8起还是要说一说...因为题主一目十行的超级本领(瞎看)所以...题目本身要求返回 B字符串在A字符串中出现的第一个位置 (从0开始) 而题主看成了字符串相同就返回2.....进而导致了一个憨憨错误的发生...