NO6——KMP

  1 int next[N];
  2 char str1[M],str2[N];
  3 //str1 长,str2 短
  4 //len1,len2,对应str1,str2的长
  5 
  6 void get_next(int len2)
  7 {
  8     int i = 0,j = -1;
  9     next[0] = -1;
 10     while(i<len2)
 11     {
 12         if(j == -1 || str2[i] == str2[j])
 13         {
 14             i++;
 15             j++;
 16             if(str2[i] != str2[j])
 17                 next[i] = j;
 18             else
 19                 next[i] = next[j];
 20         }
 21         else
 22             j = next[j];
 23     }
 24     //计算某字符串的周期,如aaaa是4,abcd是1
 25     /*
 26     int i = 0;j = -1;
 27     next[0] = -1;
 28     while(str2[i])
 29     {
 30         if(j == -1 || str2[i] == str2[j])
 31         {
 32             i++;j++;
 33             next[i] = j;
 34         }
 35         else
 36         j = next[j];
 37     }
 38     len = strlen(str);
 39     i = len-j;
 40     if(len%i==0)
 41     return len/i;
 42     else
 43     return 1;
 44     */
 45 }
 46 
 47 int kmp(int len1,int len2)
 48 {
 49     int i = 0,j = 0;
 50     get_next(len2);
 51     while(i<len1)
 52     {
 53         if(j == -1 || str1[i] == str2[j])
 54         {
 55             i++;
 56             j++
 57         }
 58         else
 59             j = next[j];
 60         /*
 61                 if(j == len2)//计算str2在str1中出现多少次
 62                 {
 63         cnt++;
 64         j= next[j];
 65                 }
 66                 */
 67     }
 68     //return j; //j为匹配的长度
 69     if(j>len2)
 70         return 1;//这里也可以返回i-len2来获得匹配在主串中开始的位置
 71     else
 72         return 0;
 73 }
 74 
 75 //数字KMP
 76 int a[1000005],b[10005];
 77 int next[10005],n,m;
 78 
 79 void getnext()
 80 {
 81     int i = 0,j = -1;
 82     next[0] = -1;
 83     while(i<m)
 84     {
 85         if(j == -1 || b[i] == b[j])
 86         {
 87             i++;
 88             j++;
 89             if(b[i] == b[j])
 90             next[i] = next[j];
 91             else
 92             next[i] = j;
 93         }
 94         else
 95         j = next[j];
 96     }
 97 }
 98 
 99 int kmp()//返回匹配位置
100 {
101     int i = 0,j = 0;
102     while(i<n)
103     {
104         if(a[i] == b[j])
105         {
106             if(j == m-1)
107             return i-j+1;
108             i++;
109             j++;
110         }
111         else
112         {
113             j = next[j];
114             if(j == -1)
115             {
116                 i++;
117                 j = 0;
118             }
119         }
120     }
121     return -1;
122 }

 

转载于:https://www.cnblogs.com/xzxl/p/7305643.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机文化基础第二章,计算机文化基础(第二章Windows2000操作系统)

计算机文化基础(第二章Windows2000操作系统)第二章Windows 2000 操作系统1. 打开“资源管理器”的方法不能是_A右击“开始”按钮 B选择“开始” 、 “程序”菜单 C从“我的电脑”的快捷菜单 D从“控制面板”中选择2. 在“资源管理器”中选定多个文件的方法不能是_A逐个双击要选…

r语言简介_R语言简介

r语言简介R is a language and environment for statistical computing and graphics that is supported by the R Foundation for Statistical Computing. It is a GNU project which is similar to the S language and environment developed at Bell Laboratories by John C…

linux中echo的使用方法

1.echo命令我们经常使用的选项有两个&#xff0c;一个是-n&#xff0c;表示输出之后不换行。另外一个是-e&#xff0c;表示对于转义字符按对应的方式处理&#xff0c;假设不加-e那么对于转义字符会按普通字符处理。 2.echo输出时的转义字符 \b 表示删除前面的空格 \n 表示换行 …

如何让计算机两个用户使用不同步,如何实现两台或多台电脑远程修改文件同步更新?...

说起文件同步工具&#xff0c;现在网上这样的程序很多&#xff0c;微软也为用户提供了一款免费的远程同步软件——Windows Live Sync。该程序提供的文件同步功能允许用户在两台或更多电脑上对指定的文件夹中的文件进行同步更新。小知识&#xff1a;文件的同步更新&#xff0c;就…

本地事物的简介

2019独角兽企业重金招聘Python工程师标准>>> 此章带大家回顾下本地事物的一些内容。标题 2 事物: 有一组操作构成的可靠,独立的工作单元----百度百科 事物的四大特性: A:原子性(Atomicity)事务是数据库的逻辑工作单位&#xff0c;事务中包括的诸操作要么全做&#x…

dbms数据库管理系统_DBMS中的数据库语言

dbms数据库管理系统DBMS数据库语言 (DBMS Database languages ) Database languages are the languages that provide the facility to specify the database schema and to express database queries and updates. They are further divided into four categories but all are…

物联网计算机相关专业吗,物联网工程属于计算机专业吗

励志语录(7qianxun.com)不是,物联网工程本身就是一个专业,属于工学范畴。本专业学生要具有较好的数学和物理基础&#xff0c;掌握物联网的相关理论和应用设计方法&#xff0c;具有较强的计算机技术和电子信息技术的能力。物联网工程专业就业前景怎么样教育装备网、物联网是继计…

第一个错误的版本_寻找第一个错误的版本

第一个错误的版本Problem statement: 问题陈述&#xff1a; Suppose that IncludeHelp turns to be a product company & we have a product manager leading a team to develop a new product. Unfortunately, the latest version of our product fails the quality chec…

js的JSON

把任何JavaScript对象变成JSON&#xff0c;就是把这个对象序列化成一个JSON格式的字符串&#xff0c;这样才能够通过网络传递给其他计算机。 如果我们收到一个JSON格式的字符串&#xff0c;只需要把它反序列化成一个JavaScript对象&#xff0c;就可以在JavaScript中直接使用这个…

软件可用性测试mantis,学生选课系统-软件可用性测试实验.doc

学生选课系统-软件可用性测试实验实验报告课程名称&#xff1a;软件测试方法和技术学生姓名&#xff1a;学号&#xff1a;院系&#xff1a;计算机 班级&#xff1a;1202 组别&#xff1a;1任课教师&#xff1a;张建东 指导老师&#xff1a;张建东目录一、实验目的&#xff1a;实…

Web 通信 之 长连接、长轮询(long polling)

基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。 一、什么是长连接、长轮询&#xff1f; 用通俗易懂的话来说&#xff0c;就是客户端不停的向服务器发送请求以获取最新的数据信…

scala中捕获异常_如何在Scala中引发异常?

scala中捕获异常Scala的例外 (Exceptions in Scala) Exceptions are cases or events that occur in the program at run time and hinder the regular flow of execution of the program. These can be handled in the program itself. 例外是在运行时在程序中发生并阻碍程序…

计算机如何输入ip地址,电脑如何切换ip地址_怎么让电脑切换ip地址-win7之家

在每台电脑中&#xff0c;系统中的ip协议都会有提供一种统一的ip地址&#xff0c;能够为为互联网上的每一个网络和每一台主机分配一个逻辑地址&#xff0c;从而达到屏蔽物理地址的差异&#xff0c;同时我们也可以对ip地址进行切换&#xff0c;那么电脑如何切换ip地址呢&#xf…

java线程和操作系统线程_操作系统中的线程

java线程和操作系统线程线程数 (Threads) A thread is a unit of CPU utilization, which comprises the following parts that are program counter, register set, stack and a thread ID. Generally, it’s well known that the process is heavy weighted which means they…

SQL 强制指定索引加快查询速度

转自&#xff1a;http://blog.csdn.net/qq380107165/article/details/45502641 今天遇到一个查询问题&#xff0c;多加了一个查询参数导致查询超时报黄&#xff0c;经过公司DBA改进&#xff0c;涨姿势了。现在发出来跟大家分享一下&#xff01;~ 1 SELECT m.* FROM TB_UserSite…

计算机IP地址pin,怎样PIN ip地址

1、用鼠标点击开始——运行(快捷键winR)、弹出【运行】对话框、在窗口中输入cmd&#xff0c;如下图所示。2、单击【确定】按钮、打开命令窗口、如下图所示&#xff1b;3、在命令窗口输入ipconfig/all然后按Enter便可以查看本机IP。如下图所示&#xff1b;4、接下来查看你所需要…

360修复导致服务器,桌面安装360软件修复漏洞补丁导致桌面TC端无法登陆,FC端VNC登陆一键修复显示HDC不可达...

问题描述桌面虚机安装360软件以后打补丁&#xff0c;触发桌面虚机重启以后TC端无法连接到桌面&#xff0c;FC登陆VNC相应的虚拟机通过桌面云修复工具一键修复到33%&#xff0c;提示HDC不可达。告警信息处理过程在360服务器端把华为桌面云的进程加入到360服务器的白名单里面&…

java协变返回类型_Java中的协变返回类型

java协变返回类型协变返回类型 (Covariant return type) The covariant return type is that return type which may vary in parent and child class (or subclass). 协变量返回类型是该返回类型&#xff0c;在父类和子类(或子类)中可能有所不同。 Before JDK5 java does not…

dfs文件服务器访问权限,fastDFS 文件服务器访问

鉴权 token 获取token 由文件服务器管理员分配接口定义上传文件请求 URL&#xff1a;请求方式&#xff1a;GET/POST参数形式&#xff1a;form-data参数&#xff1a;参数名位置类型说明是否必填access_tokenheaderString用户 token是fileurlMultipartFile文件是返回&#xff1a;…

CCFL的完整形式是什么?

CCFL&#xff1a;冷阴极荧光灯 (CCFL: Cold Cathode Fluorescent Lamp) CCFL is an abbreviation of a "Cold Cathode Fluorescent Lamp". CCFL是“冷阴极荧光灯”的缩写。 It is a lighting system lamp that contains cathode that discharges electrons and it …