算法萌新闯力扣:找出字符串中第一个匹配项点下标

 力扣热题:找出字符串中第一个匹配项点下标

开篇

 这道题个人感觉非常不错,虽然是简单题,但可以巩固几个大家平时容易忘记的有关字符串的知识点,我在做题时也掉进去了。

题目链接:28.找出字符串中第一个匹配项点下标

题目描述

算法萌新闯力扣:找出字符串中第一个匹配项点下标_第1张图片

代码思路及知识点

1.利用String类中的substring方法,可以快速秒杀这道题,时间复杂度击败100%!
substring:截取指定访问的子串
我们可以在haystack中截取和needle长度相同的子串,与needle字符串进行比较,得到想要的结果
2.两个字符串的比较,如果是用"==",比较的是地址,而比较是否相同,要用equals()方法,做题时我就中招了,一直不知道哪里出错

代码纯享版

class Solution {
    public int strStr(String haystack, String needle) {
        if(haystack.equals(needle)) return 0;
        int len1 = haystack.length();
        int len2 = needle.length();
        for (int i = 0; i <= len1 - len2; i++) {
            if (haystack.substring(i, i + len2).equals(needle)) return i;
        }
        return -1;
    }
}

代码逐行解析版

class Solution {
    public int strStr(String haystack, String needle) {
        if(haystack.equals(needle)) return 0; //如果两个字符串完全一样,直接返回下标0
        int len1 = haystack.length(); //haystack字符串的长度
        int len2 = needle.length(); //needle字符串的长度
        for (int i = 0; i <= len1 - len2; i++) { //注意要在 haystack未检索的字符串 长度大于等于 needle字符串长度 时进行才有意义
            if (haystack.substring(i, i + len2).equals(needle)) return i; //利用substring方法快速判断
        }
        return -1;//找不到,返回-1
    }
}

结语

  通过这道题,不知道大家是否有所收获。如果对大家有帮助,可以点个关注和赞支持一下,我每天都会更新力扣题的讲解,与大家一起进步。

你可能感兴趣的:(Java算法,算法,leetcode,java,数据结构)