实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
说明:
当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符
字符串比较
public static int strStrChar(String haystack,String needle) {
if(needle==null | needle.equals("")) {
return 0;
}
char[] main = haystack.toCharArray();
char[] str = needle.toCharArray();
int y = 0;// hello ll
for(int i = 0;i<=main.length-str.length;i++) {
for(y=0;y<str.length;y++) {
if(main[i+y]!=str[y]) {
//让main直接右移位
break;
}
if(y==str.length-1) {
//如果y已经到了 直接return 当前main的i
return i;
}
}
}
return -1;
}
双指针解法
public static int strStr(String haystack, String needle) {
if(needle==null | needle.equals("")) {
return 0;
}
int x = 0,y = 0,index = 0;
while(x<haystack.length() & y<needle.length()) {
// helollo ll
if(haystack.charAt(x)==needle.charAt(y)) {
//如果检测到相等 索引都右移
x++;
y++;
}else {
//如果不匹配 右边的要重新回到第1位字符
index++;//因为y保持0 所以x不能右移位 用index来让x回到原位
x= index;
y = 0;
}
}
return y ==needle.length()?index:-1;
}
字符串比较解析视频
实现 strStr() 函数 LeetCode题目
本文详细介绍了如何实现strStr()函数,通过两种不同的方法来查找一个字符串在另一个字符串中首次出现的位置。一种方法是使用字符数组进行比较,另一种则是采用双指针策略。文章还讨论了特殊情况,如当目标字符串为空时的处理方式。
2352

被折叠的 条评论
为什么被折叠?



