模式匹配

Rust模式匹配 模式匹配是从函数式编程语言(例如:Haskell,Lisp)吸收而来的,用于为复杂的类型系统提供一个轻松的解构能力。rust使用match来提供模式匹配的功能。mathc类似于其它编程语言中的switch-case,但是远比switch-case强大。match的通用模式如下所示。该形式清晰的说明了何为模式,何为模式匹配:将模式与 target 进行匹配,即为模式匹配,而模式匹配不仅仅局限于 match,还有if let。 阅读详情

利用未改进的KMP算法,在输出s1在s2中第一次出现的位置。假设串长不超过80。输入数据是两个字符串,输出数据是s1的NEXT数组的值和s1在s2中第一次出现的位置。找不到输出0。

输入格式:
输入共2行,分别是s1和s2。

输出格式:
输出也是两行,第一行输出NEXT数组的值,第二行是一个表示位置的整数。输出格式为%3d。

输入样例:
abacab
abacaabaccabacabaa
输出样例:
0 1 1 2 1 2
11

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int next1[1000];
//next1[j] = k,表示当T[i] != P[j]时,j指针的下一个位置。
//求字串在主串中第一次出现的位置
void get_next1(char T[1000],int next1[],int len)
{
    int i=1,j=0;
    next1[1]=0;
    while(i<len)
    {
        if(j==0||T[i-1]==T[j-1])
        {
            ++i;
            ++j;
            next1[i]=j;
        }
        else
            j=next1[j];
    }

}
int main()
{
    char s1[1000],s2[1000];
    gets(s1);
    gets(s2);

    int len1=strlen(s1);
    int len2=strlen(s2);
//    if(len1>len2)
//    {
//        printf("  0");
//        return 0;
//    }
//    int flag=1;
    get_next1(s1,next1,len1);
    int i,j;
    for(i=1; i<=len1; i++)
        printf("%3d",next1[i]);
    printf("\n");

    i=0,j=0;
        while(i<len1&&j<len2)
        {
            if(s1[i]==s2[j])
            {
                i++;
                j++;
            }
            else
            {

                j=j-i+1;
                i=0;
            }
        }
        if(i==len1)
        {
            printf("%3d",j-i+1);
//            flag=1;
        }
        else
            printf("  0");

//    if(flag==0)
//        printf("  0");

    return 0;




}

java 字符串模式匹配_算法之字符串模式匹配 导读字符串模式匹配是常见的算法之一,在实际生活中有较高的使用频率。本文详细介绍两种最常见的字符串模式匹配算法:朴素模式匹配KMP模式匹配字符串模式匹配,也称子串的定位操作,通俗的说就是在一个主串中判断是否存在给定的子串(又称模式串),若存在,则返回匹配成功的索引。如:主串:zhuanlanzhihu子串:zhihu主串中包含子串"zhihu",说明匹配成功,且返回的索引为:8注:本文所有出现的字符... 阅读详情

相关推荐

【Cubietruck】Qt5.8.0 x64、x86、armhf三个版本的编译安装

一、       Preparation 以下环境配置支持虚拟机和实体机,但是实体机生产效率会相对高一点,实体机编译Qt的速度是虚拟机两倍以上。 若使用虚拟机,推荐使用VirtualBox,开源免费,尽量不要使用Vmware破解版。   Download List   名称 链接 下载项目 OS https://mirro

beatfan的博客 3658

KMP算法

一 、KMP算法(必考) KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置。该算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的,以其名字首字母命名 28. 实现 strStr() class Solution { public int strStr(String haystack, String needle) { if(needle ==null || needle.equals("")){

曲终人散 367

STM32H743必要外围电路分析

写在前面:这篇博客是我第一次绘制STM32最小系统板的过程记录。 2020-1-11 BOOT STM32采用ARM内核,和ARM处理器一样,都有专门的boot脚决定单片机从何处启动。 在官方数据手册的第105页,我们可以看到 系统复位后,在SYSTICK的第四个上升沿锁存BOOT引脚的值,复位后,BOOT引脚可以由用户自由配置而不会影响系统正常运行。 BOOT引脚决定了自举存储器地址,当BO...

Cui_Hongwei的博客 1万+

朴素的模式匹配算法和快速模式匹配算法(KMP)

朴素的模式匹配算法和快速模式匹配算法(KMP) 字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置称为字符串的模式匹配,其中称p为模式(Pattern),t为正文(Text) 1、朴素的模式匹配算法 基本思想:用p中的每个字符去与t中的字符一一比较。比较成功返回1;比较失败,正文t的下标向后移动一位,直到比较成功。如若t的剩余字符的长度小于p的长度还未匹配成功,则返回-1。 n代表正...

qq_40112791的博客 1080

一文搞定 GitHub SSH Key:生成、配置、好处全攻略

本文详细介绍了如何配置GitHub SSH Key,实现免密安全认证。主要内容包括:SSH协议的四大优势(免密登录、安全性高、稳定省心、支持自动化);Git身份配置步骤;检查本地SSH Key;生成RSA密钥对;添加密钥到SSH代理;复制公钥到GitHub;测试连接。配置完成后,开发者可通过SSH地址克隆仓库,实现push/pull全程免密操作。该方案显著提升Git使用效率,同时保障安全性,是开发者必备技能。

qq_62904883的博客 957

一文读懂Cache一致性原理

本文介绍了为什么需要维护cache一致性、一致性协议的本质和类别,以及如何设计一致性协议。

W1Z1Q的专栏 6838

字符串中的快速模式匹配2

字符串中的快速模式匹配2 2、算法程序           模式匹配过程的一般形式: 将模式置于最左边; while 模式没有完全匹配and文本没有读完do begin while模式字符不同于当前文本字符do 正确移动模式; 移动置文本下一个字符; end;        方便起见,我们假定输入文本以text[1:n]的...

小黄鸭的博客 586

Microsoft Bitlocker企业级管理部署方案

BitLocker是Windows 10以及更高版本中内置的磁盘加密工具,是一种可靠的数据保护机制,可以保护计算机上的敏感数据不被未经授权的人访问。BitLocker的工作原理是将整个系统卷或其他数据卷加密的同时,向某个可信软件或硬件模块请求密钥解密数据。BitLocker最大的好处在于其内置于Windows系统,所以用户无需安装其他软件或购买额外的许可证或硬件设备。本文将介绍Microsoft BitLocker企业级管理部署方案,包括:BitLocker部署前的准备工作。

xueyunshengling的博客 2073

字符串模式匹配算法(字符串搜索)

暴力求解(朴素算法)假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有: 如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0

Healist的博客 915

杰理 JL701N/JL703N USB MIDI 使用教程

摘要:本教程介绍如何在杰理JL701N/JL703N音箱的可视化SDK中配置USB MIDI功能。主要步骤包括:1)启用PC模式;2)修改SDK宏定义启用USB MIDI;3)实现MIDI数据接收处理逻辑;4)调用接口发送MIDI数据;5)使用MIDI-OX测试功能。针对低版本SDK可能出现的设备识别问题,提供了在midi.c文件中添加特定代码行的解决方案。使用前需确保SDK版本达标,并注意备份原始文件。

qq_42014563的博客 1263

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

字符串匹配:BF算法和KMP算法

BF算法:朴素的模式匹配算法,用于在主串中定位字串首次出现的位置。 例如:string src="abcnicessa"; string des="nice"; 一直用子串的首位与主串的各位相比,直到找到相等的位。 int BF(string src, string des,int pos) { unsigned int i=pos, j=0; while (i < sr...

weixin_41521306的博客 636

软考高级网络规划设计师教程(第3版)

"本书是由工业和信息化部教育与考试中心组织编写的考试用书,依据《网络规划设计师考试大纲》(2026年审定通过)编写。本书分为两篇:第一篇为网络规划与设计综合知识,其中第1章介绍计算机网络基础知识,第2章介绍网络互连与互联网,第3章介绍网络规划与设计的知识和方法,第4章介绍网络资源设备,第5章介绍网络安全技术,第6章介绍标准化和网络安全法规;第二篇为案例实践,其中第7章介绍网络规划案例,第8章介绍网络故障分析与处理案例,第9章介绍网络安全部署案例,第10章介绍网络规划与设计论文写作的指导思想和写作技巧。

鹿鸣天涯 3937

串的模式匹配算法

最近在学数据结构中的串,现在来写一写我对串的不同模式匹配算法的理解: 声明:首先需要注意这里面的串的存储结构,它并不是普通的像C语言中的字符串一样在每个串末尾有一个结尾标志‘/0’,然而这里是通过在数组下标为0的元素赋值为整个串的有效长度值,例如字符串friend,储存它的数组最后一个元素T[6]中存储字符’d’;第一个元素T[0]存储有效长度6;第一个存储字符的元素T[1]存储的字符’f’。然后...

qq_43771635的博客 3242

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

KMP模式匹配算法

KMP模式匹配算法的分析介绍

daye_的博客 3348

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

串的模式匹配

字串(模式串)的定位操作 在主串(也称做目标串)S中,从位置start开始查找是否存在子串(也称做模式串)T,如果在主串S中查找到一个与模式串T相同的子串,则称查找成功;如在主串S中未找到一个与模式串T相同的子串,则称查找失败。当模式匹配成功时,函数返回模式串T的第一个字符在主串S中的位置;当模式匹配失败时,函数返回-1 朴素的模式匹配算法(Brute-Force算法) BF算法的主要思想是...

世俗的博客 7293

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【数据结构】串的模式匹配:简单的模式匹配算法,KMP算法

简单模式匹配算法;KMP算法;求next数组

小人物,大梦想! 3344

模式匹配算法

下面分别介绍:朴素模式匹配算法 和 改进模式匹配算法(KMP) 朴素模式匹配算法思想: 从目标S中的第一个字符开始和模式T中的的第一个比较(用 i 和 j 分别指示S串和T串中正在比较字符的位置),若相等,则继续逐个比较后续字符,否则, 从S 的第二字符重新开始匹配,直到匹配完成。 核心就是 i = i - j +1 ; //其中 j 就是已经匹配字符的个数 。+1 带表下一次匹配的位置。 ///朴素匹配 #include<iostream> #include<cstdio...

weixin_43154720的博客 1563

Scala模式匹配

(1)语法:case class Person (name: String, age: Int) //举例(2)说明样例类仍然是类,和普通类相比,只是其自动生成了伴生对象,并且伴生对象中自动提供了一些常用的方法,如 apply、unapply、toString、equals、hashCode 和 copy。样例类是为模式匹配而优化的类,因为其默认提供了 unapply 方法,因此,样例类可以直接使用模式匹配,而无需自己实现 unapply 方法。

2401_83329402的博客 1128

Scala的模式匹配详解

模式匹配是Scala中非常有特色,非常强大的一种功能。模式匹配,其实类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件,进行不同的处理。 但是Scala的模式匹配的功能比Java的swich case语法的功能要强大地多,Java的swich case语法只能对值进行匹配。但是Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配、对Array和List的元素情况进行匹配、对case class进行匹配、甚至对有值或没值(Option)进行匹配。 而且对于Sp

weixin_49165958的博客 1525

Lua模式匹配

    与其他几种脚本语言不通,Lua语言既没有使用POSIX正则表达式,也没有使用Perl正则表达式来进行模式匹配。之所以这样做的主要原因在于大小问题:一个典型的POSIX正则表达式实现需要超过4000行代码,这比所有Lua语言标准库总大小的一半还大。相比之下,Lua语言模式匹配的实现代码只有不到600行。尽管Lua语言的欧式匹配做不到完整POSIX实现的所有功能,但是Lua语言的模式匹配仍然非...

2212

Scala模式匹配详解

模式匹配语法中,采用 match 关键字声明,每个分支采用 case 关键字进行声明,当需要匹配时,会从第一个 case 分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹 配不成功,继续执行下一个分支进行判断。如果所有 case 都不匹配,那么会执行 case _分支, 类似于 Java 中 default 语句。

楚生辉的博客 1万+
上一篇: 串的查找
下一篇: 模式匹配
Asssshzy
博客等级 码龄7年 28粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值