【LeetCode】28 . 找出字符串中第一个匹配项的下标

这篇具有很好参考价值的文章主要介绍了【LeetCode】28 . 找出字符串中第一个匹配项的下标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

28 . 找出字符串中第一个匹配项的下标(简单)

【LeetCode】28 . 找出字符串中第一个匹配项的下标,LeetCode刷题,leetcode,算法,职场和发展
【LeetCode】28 . 找出字符串中第一个匹配项的下标,LeetCode刷题,leetcode,算法,职场和发展
【LeetCode】28 . 找出字符串中第一个匹配项的下标,LeetCode刷题,leetcode,算法,职场和发展

方法:双指针法

思路

  • 使用 find 函数枚举原串 ss 中的每个字符作为「发起点」,每次从原串的「发起点」和匹配串的「首位」开始尝试匹配:

    匹配成功:返回本次匹配的原串「发起点」。
    匹配失败:枚举原串的下一个「发起点」,重新尝试匹配。文章来源地址https://www.toymoban.com/news/detail-683870.html

代码

class Solution {
public:
    int strStr(string haystack, string needle) {
        int pos = haystack.find(needle[0]);
        while(pos != -1) {
            int p = pos, q = 0;
            while(q<needle.size() && haystack[p] == needle[q]){
                p++, q++;
            }
            // 已经将needle遍历完毕,说明匹配成功
            if(q == needle.size()) return pos;
            else {
                // 将先前匹配的字符置'0',防止重复匹配
                haystack[pos] = '0';
                // 寻找下一个可能匹配的位置
                pos = haystack.find(needle[0]);
            }
        }
        return pos;
    }
};

到了这里,关于【LeetCode】28 . 找出字符串中第一个匹配项的下标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 力扣-28. 找出字符串中第一个匹配项的下标

    力扣题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = “sadbutsad”, needle = “sad” 输出:0 解释:“sad” 在下标 0 和 6 处匹配。 第

    2024年02月20日
    浏览(29)
  • Leecode找出字符串中第一个匹配项的下标 即实现strSTR()函数

    目录 简单介绍该函数的作用         在我们去用查找微信或者qq聊天记录的时候,我们总不能一句一句去找吧。我们需要用到的功能底层大概是此博客所讲的这个函数熬。 一.算法需要传入的参数和返回类型         需要传入的就是和所有的文本,返回的是当前

    2024年02月12日
    浏览(34)
  • 【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置

    ========================================================================= 主页点击直达: 个人主页 我的小仓库: 代码仓库 C语言偷着笑: C语言专栏 数据结构挨打小记: 初阶数据结构专栏 Linux被操作记: Linux专栏 LeetCode刷题掉发记: LeetCode刷题 算法: 算法专栏  C++头疼记: C++专栏 计算机

    2024年02月08日
    浏览(41)
  • [C][整理][数组]从键盘输入一个字符串(其长度小于20),找出其中ASCII码值最小的字符,并输出该字符。

    题目:从键盘输入一个字符串(其长度小于20),找出其中ASCII码值最小的字符,并输出该字符。 只允许在 /***Program***/ 与 /***End***/ 之间添加。 测试输入:kdjhfkbe 测试输出:b 该程序的主要步骤是读取用户输入的字符串、遍历字符串中的每个字符,找到ASCII码值最小的字符并输出

    2024年02月06日
    浏览(58)
  • 【leetcode 力扣刷题】字符串匹配之经典的KMP!!!

    以下是能用KMP求解的算法题,KMP是用于字符串匹配的经典算法【至今没学懂………啊啊啊】 题目链接:28. 找出字符串中第一个匹配项的下标 题目内容: 题意还是很好理解的,要在字符串haystack中查找一个完整的needle,即字符串匹配。 暴力求解就是用 两层循环 :haystack从第

    2024年02月09日
    浏览(28)
  • 【算法|动态规划No.28】leetcode1312. 让字符串成为回文串的最少插入次数

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月06日
    浏览(42)
  • 【Py/Java/C++三种语言详解】LeetCode每日一题240117【哈希集合】LeetCode2744、最大字符串匹配数目

    LeetCode2744、最大字符串匹配数目 给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。 如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以匹配: 字符串 words[i] 等于 words[j] 的反转字符串。 0 = i j words.length 请你返回数组 words 中的 最大 匹配数

    2024年01月18日
    浏览(38)
  • sqlserver 查找某个字符在字符串中第N次出现的位置

    如果想要在 Microsoft SQL Server 中查找某个字符在字符串中第 N 次出现的位置,可以使用 CHARINDEX 函数。该函数接受三个参数: 要查找的字符(必需) 要搜索的字符串(必需) 开始搜索的位置(可选) 它会返回所查找字符在字符串中的位置,如果字符不存在,则返回 0。 举个例子,如果

    2024年02月13日
    浏览(27)
  • 【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符

     作者:小卢   专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》 目录  917. 仅仅反转字母  387. 字符串中的第一个唯一字符 917. 仅仅反转字母  题目描述: 给你一个字符串  s  ,根据下述规则反转

    2023年04月12日
    浏览(40)
  • 【字符串匹配】暴力匹配算法

    ​ 暴力匹配算法,也称为朴素字符串匹配算法,是一种简单但不高效的字符串匹配方法。它的原理非常直观,其主要思想是逐个字符地比较文本串和模式串,从文本串的每个可能的起始位置开始,依次检查是否有匹配的子串。以下是暴力匹配算法的详细原理: 1. 一个字一个

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包