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