力扣热题:找出字符串中第一个匹配项点下标
开篇
这道题个人感觉非常不错,虽然是简单题,但可以巩固几个大家平时容易忘记的有关字符串的知识点,我在做题时也掉进去了。
题目链接:28.找出字符串中第一个匹配项点下标
题目描述
代码思路及知识点
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; //如果两个字符串完全一样,直接返回下标0int 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}
}
结语
通过这道题,不知道大家是否有所收获。如果对大家有帮助,可以点个关注和赞支持一下,我每天都会更新力扣题的讲解,与大家一起进步。