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

面试经典算法150题系列-找出字符串中第一个匹配项的下标

找出字符串中第一个匹配项的下标

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

示例 1:

输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:

输入:haystack = "leetcode", needle = "leeto"
输出:-1
解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 

实现思路:

此题比较简单,就是检查 haystack 是否包含needle字符串,如果包含则返回第一个匹配的字符位置,如果不匹配则返回-1,Java中有一个内置的方法indexOf()恰好实现该功能。

实现代码:

    public int strStr(String haystack, String needle) {
        // 如果needle是空字符串,根据约定返回0
        if (needle.isEmpty()) {
            return 0;
        }
        // 使用Java内置的indexOf方法查找子字符串
        int index = haystack.indexOf(needle);
        // 如果没有找到,indexOf会返回-1
        return index;
    }

   

知识补充:

在Java中,indexOfString 类的一个方法,用于查找子字符串(needle)在字符串(haystack)中第一次出现的索引。如果找到子字符串,indexOf 返回它在父字符串中的位置索引;如果没有找到,它返回 -1

以下是 indexOf 方法的一些常见用法:

  1. 基本使用

    int index = haystack.indexOf(needle);

    这将返回子字符串 needle 在字符串 haystack 中第一次出现的索引。

  2. 从特定索引开始搜索

    int index = haystack.indexOf(needle, 5);

    这将从索引 5 开始在 haystack 中搜索 needle,返回从该索引开始的第一次出现的索引。

  3. 忽略大小写的搜索

    int index = haystack.indexOf(needle, 0); 
    if (index == -1) { 
      // 转换为全小写再搜索 
      index = haystack.toLowerCase().indexOf(needle.toLowerCase()); 
    
    }

       toLowerCase()String 类的一个方法,用于将字符串中的所有字符转换为小写。这个方法不改变原始字符串,因为它返回一个新的字符串,其中包含转换后的小写字符。indexOf 方法本身不提供直接忽略大小写的选项,但可以通过转换两个字符串为全小写或全大写后再进行搜索。

注意indexOf 方法是区分大小写的,并且它按照从左到右的顺序搜索,一旦找到匹配的子字符  串,就会停止搜索并返回索引。


http://www.kler.cn/a/286350.html

相关文章:

  • Leetcode 45. 跳跃游戏 II
  • 【Block总结】DynamicFilter,动态滤波器降低计算复杂度,替换传统的MHSA|即插即用
  • Transformer+vit原理分析
  • 留学生scratch计算机haskell函数ocaml编程ruby语言prolog作业VB
  • 【股票数据API接口41】如何获取股票指最新分时MA数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • Ubuntu安装VMware17
  • 从Vue的Weex迁移到Rax Weex
  • 深度学习与大模型第1课环境搭建
  • Unity编辑器开发 Immediate Mode GUI (IMGUI)
  • Java源码学习之高并发编程基础——AQS源码剖析之阻塞队列(下)
  • 深度学习实战1--决策树与随机森林(最新版本不报错)
  • 苹果笔记本电脑能不能玩游戏?苹果电脑玩游戏咋样?
  • UE5 微软输入法输入中文崩溃
  • 华为 HCIP-Datacom H12-821 题库 (3)
  • 单击视角复位按钮,即可看到整个地球【mars3d】
  • Dify 与 FastGPT 流程编排能力对比分析
  • Node-RED解析巴法云/小米的传感器数据
  • ★ 算法OJ题 ★ 力扣15 - 三数之和
  • day25 Java基础——面向对象两万字详解!(纯干货)
  • wpf prism 《2》、导航
  • Linux 系统入门:高级系统管理与文本处理
  • mysql的聚簇索引、非聚簇索引、回表
  • VI设计和UI设计
  • C++初学(19)
  • nginx部署前端vue项目步骤
  • Android实现自定义方向盘-5livedata实现