
#Leetcode# 28. Implement strStr()
发布日期:2025-03-30 22:24:41
浏览次数:7
分类:精选文章
本文共 935 字,大约阅读时间需要 3 分钟。
C#实现StrStr函数的细节分析——寻找子字符串的方法
在编程的过程中,常需要实现某一特定功能的高效算法。本文将详细解析如何在字符串 haystack 中查找第一位出现子字符串 needle 的方式,并提供相应的代码实现。
代码简要说明:
结构初始化
首先,我们需要获取 haystack 和 needle 的长度。int l1 = haystack.length(), l2 = needle.length();
接下来,进行基本的参数校验。如果 needle 的长度大于 haystack,则直接返回-1。
if (l2 > l1) return -1;
另外,如果 needle 为空字符串,按题意应该返回0。
if (needle.empty()) return 0;
滑动窗口遍历
采用滑动窗口的方式遍历 haystack。窗口的大小等于 needle 的长度,遍历次数则为 haystack.length() - hay.getWindowSize() + 1。for (int i = 0; i <= l1 - l2; i++)
字符匹配
在每一次遍历中,逐个字符比较 haystack窗口内的字符与 needle 中的对应字符。注意,这种方法可能会重复进行同一字符的比较,因此需要引入计数器来记录匹配的进度。int cnt = 0;for (int j = 0; j < l2; j++)
只要发现一个字符不匹配,就立即终止当前的匹配过程,并继续下一个窗口的检查。只有所有字符都匹配时,才满足条件。
if (haystack[i + j] != needle[j]) break;else cnt++;
返回结果
如果在某次循环中匹配成功,则返回当前窗口的起始索引i。if (cnt == l2) return i;
无匹配返回
如果遍历完所有可能的窗口都没有找到匹配的子字符串,则返回-1。return -1;
示例解析
让我们以示例1进行分析:
- 输入: haystack = "hello", needle = "ll"
- 输出: 2
这种方法能够正确找到第二个字符位置开始的"ll"。通过上述算法,i=0时,检查第0和第1个字符是否与
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月17日 07时10分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
047:cesium加载geojson文件,显示图形
2025-03-30
(type interface {}) to type string
2025-03-30
(五)java多线程之Lock类
2025-03-30
(从进程/线程视角看内存)鸿蒙内核源码分析
2025-03-30
(十一) 构建dubbo分布式平台-dubbo简介
2025-03-30
asp.net MVC 强类型视图表单Ajax提交的注意事项
2025-03-30
Bailey Button Botas Ugg Baratas Corto Botas 5803 Casta?a Holgura Outlet GUANGXI SEDA ESTANCIA CALLB
2025-03-31
canvas设置文字阴影
2025-03-31
Centos 5.3 ADSL拨号组建中小型企业网络
2025-03-31
Centos 5.8 安装后不能使用ifconfig
2025-03-31
Centos 6 & 7 LVM 逻辑盘卷管理
2025-03-31
CentOS 6 时间,时区,设置修改及时间同步
2025-03-31
Centos 6.3 64bit安装KVM总结
2025-03-31
CentOS 6.4 yum安装chrome
2025-03-31
CentOS 6.4下编译安装MySQL 5.6.14
2025-03-31
Centos 6.4搭建网络源
2025-03-31