keywords: 数组
题目描述:
实现 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() 定义相符。
代码
/**
* @Author: Dunfu Peng
* @Date: 2019/4/12 19:33
*/
public class Solution {
public int strStr(String haystack, String needle) {
if (needle==null||needle.length()==0){
return 0;
}
int nLen=needle.length();
int hLen=haystack.length();
int result=-1;
if (hLen<nLen){
return result;
}
int i=0,j=0;
while (i<hLen){
if(haystack.charAt(i)==needle.charAt(j)){
result=i;
i++;
j++;
while (i<hLen&&j<nLen){
if (haystack.charAt(i)!=needle.charAt(j)){
break;
}
i++;
j++;
}
if (j==nLen){
return result;
}else if (hLen-result<nLen) {
return -1;
}else{
j=0;
i=result;
result=-1;
}
}
i++;
}
return result;
}
}
欢迎关注我的微信公众号,接收最新动态。

本文深入探讨了strStr()函数的实现细节,这是一种用于在主字符串中查找子字符串出现位置的方法。文章提供了详细的代码示例,展示了如何通过逐字符比较来定位子字符串,并讨论了特殊情况,如子字符串为空时的处理方式。
2358

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



