面试经典算法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 方法是区分大小写的,并且它按照从左到右的顺序搜索,一旦找到匹配的子字符  串,就会停止搜索并返回索引。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值