当前位置: 首页 > news >正文

DAY 44 leetcode 28--字符串.实现strStr()

题号28

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1 

我的解法

双指针,slow定位,fast比较,成功则返回,失败则往前进

class Solution {
    public int strStr(String haystack, String needle) {
        if (needle.isEmpty()) {
            return 0;
        }
        
        int slow = 0;
        int fast = 0;
        int count = 0;
        int size1 = haystack.length();
        int size2 = needle.length();
        
        if (size1 < size2) {
            return -1;
        }
        
        while (fast < size1 - size2 + 1) {
            slow = fast;
            count = 0;
            for (int i = 0; i < size2; i++) {
                if (needle.charAt(i) == haystack.charAt(fast)) {
                    fast++;
                    count++;
                    if (count == size2) {
                        return slow;
                    }
                } else {
                    fast = slow + 1; // 移动fast指针到下一个可能的起始位置
                    break;
                }
            }
        }
        
        return -1;
    }
}

相关文章:

  • 【技术文章的标准结构与内容指南】
  • GIC驱动程序分析
  • 自注意力的机制内涵和设计逻辑
  • 151. 反转字符串中的单词
  • AJAX原理与XMLHttpRequest
  • 榕壹云酒水定制系统:基于THinKPHP+MySQL+UniApp打造数字化时代的个性化购酒新体验
  • EasyCVR视频汇聚系统:AIoT+视频智能分析赋能食品安全生产全流程监管
  • golang-非orm数据库的操作与对比 database/sql、sqlx 和 sqlc
  • 鸿蒙开发-模块化-导入,导出模块
  • 【信息系统项目管理师】高分论文:论信息系统项目的整合管理(银行数据仓库项目)
  • C#进阶学习(二)泛型及泛型约束的认识
  • day25 学习笔记
  • Python字符串split()函数完全指南
  • 【解决】bartender软件换网之后神秘变慢
  • 发票识别接口:企业财务数字化转型的 “超级引擎”
  • 大数据学习栈记——MongoDB安装
  • Build a Debugger (1) : ptrace
  • GO语言入门
  • 线程上下文切换耗时分析
  • 3D版的VLA——从3D VLA、SpatialVLA到PointVLA(不动VLM,仅动作专家中加入3D数据)
  • 北大强基计划招生简章发布,笔试部分考试科目有变化
  • 海南陵水一酒店保洁员调包住客港币,被判刑一年六个月
  • 研究显示:日行9000步最高可将癌症风险降低26%
  • 青岛:今年计划新增城镇住房约5.77万套,推动房地产市场回稳
  • 外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入
  • 杭州萧山区两宗地块收金约44.73亿元,最高溢价率74.4%