首页 > 编程语言 >【算法】【字符串】找出字符串中第一个匹配项的下标

【算法】【字符串】找出字符串中第一个匹配项的下标

时间:2024-01-21 21:25:08浏览次数:28  
标签:下标 int needle mark 算法 字符串 haystack

1  题目

给你两个字符串 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 。

2  解答

class Solution {
    public int strStr(String haystack, String needle) {
        // 直接遍历
        for (int i = 0; i < haystack.length(); i++) {
            boolean flag = true;
            int mark = i;
            for (int j = 0; j < needle.length(); j++, mark++) {
                if (mark >= haystack.length() || needle.charAt(j) != haystack.charAt(mark)) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

加油。

标签:下标,int,needle,mark,算法,字符串,haystack
From: https://www.cnblogs.com/kukuxjx/p/17978386

相关文章

  • 【算法】【字符串】验证回文串
    1 题目如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。示例1:输入:s="Aman,a......
  • C++U6-03-最短路算法2-bellmon-ford算法
    学习目标贝尔曼福特算法、SPFA 可以用来复习的B站视频:1、https://www.bilibili.com/video/BV1RK4y1d7ct?p=3&vd_source=5c960e1ede940bc5cab8ed42c8bdc9372、https://www.bilibili.com/video/BV18a4y1A7gv/?spm_id_from=333.999.0.0 SPFA算法是 Bellman-Ford算法 的队......
  • 文心一言 VS 讯飞星火 VS chatgpt (183)-- 算法导论13.4 7题
    七、用go语言,假设用RB-INSERT将一个结点x插入一棵红黑树,紧接着又用RB-DELETE将它从树中删除。结果的红黑树与初始的红黑树是否一样?证明你的答案。文心一言:首先,我们需要明确RB-INSERT和RB-DELETE的基本操作。RB-INSERT的基本步骤如下:将新节点插入到红黑树的某个位置。重新平......
  • 排序算法的性能比较
    写在前面菜鸡博主最近放寒假了,打算接下来的一段时间内回顾一下以前学过的一些知识,也是为考研做一些准备吧。很菜,勿喷,希望能和大家一起学习,共同进步!主要目标和具体要求目标排序对于数据处理是一项十分重要和基础的工作。采用如下算法实现排序功能:插入排序、交换排序、选择排序......
  • 文心一言 VS 讯飞星火 VS chatgpt (183)-- 算法导论13.4 7题
    七、用go语言,假设用RB-INSERT将一个结点x插入一棵红黑树,紧接着又用RB-DELETE将它从树中删除。结果的红黑树与初始的红黑树是否一样?证明你的答案。文心一言:首先,我们需要明确RB-INSERT和RB-DELETE的基本操作。RB-INSERT的基本步骤如下:将新节点插入到红黑树的某个位置。重......
  • 一种计数算法
    前言常见的一个问题:给定一个整形数组,统计其中有多少唯一的元素.常见的思路有哪些呢?元素去重并统计,利用哈希表进行去重计数.数组排序后统计以上空间复杂度均与元素数量关联,如果允许损失精度,是否可以使用较低的空间占用来统计呢?利用布隆过滤器是一种的一种但......
  • 算法学习Day36重叠区间
    Day36重叠区间ByHQWQF2024/01/21笔记435.无重叠区间给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间[1,2]和[2,3]的边界相互“接触”,但没有相互重叠。示例1:输入:[[1,2],[2,3],[3,4],[1......
  • Java将字符串转为list数组
    将字符串转为list数组的实现方法概述在Java开发中,有时候我们需要将一个字符串转换为一个列表数组,以便对其中的元素进行操作和处理。本文将介绍一种常见的实现方法,并提供详细的步骤和示例代码来帮助你完成这个任务。实现步骤下面是实现将字符串转为list数组的一般步骤,你可以按照......
  • Java将json字符串转换为数组的方法
    Java将json字符串转换为数组的方法在Java开发中,经常会遇到将json字符串转换为数组的需求。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。而Java中的JSONArray类可以用来处理json数组。下面将介绍一种常用的方法,用于将json字符串转换为......
  • Java获取两个字符串日期的间隔天数
    Java获取两个字符串日期的间隔天数1.概述在Java中,要计算两个字符串日期之间的间隔天数,首先需要将字符串日期转换为java.util.Date对象,然后通过对比两个Date对象的时间戳计算出间隔天数。2.实现步骤步骤描述步骤1将字符串日期转换为java.util.Date对象步骤2获取......