KMP算法第一次学习

开头准备:

#include<iostream>
#include<cstdio>

using namespace std;
#define MAXN 100

int next[MAXN];

生成next数组的函数:

void getnext(string pattern){
	int m = pattern.size();
	int j = 0;
	next[j] = -1;
	int t = next[j];
	while (j < m) {
		if(j == -1 || pattern[j] == pattern[t]){
			t++;
			j++;
			next[j] = t;
		}else{
			t = next[t];		//当不匹配的时候让子串当前下标跳转到next数组值对应下标
		}
	}
}

KMP函数:

int kmp(string text, string pattern){
	getnext(pattern);
	int n = text.size();
	int m = pattern.size();
	int i = 0;
	int j = 0;
	while (i < n && j < m){
		if(j == -1 || text[i] == pattern[j]){
			i++;
			j++;
		}else{
			j = next[j];		//当不匹配的时候让子串当前下标跳转到next数组值对应下标 
		}
	}
	if( j == m){
			return i - j;
	}
	else{
		return -1;
	}
}

主函数:

int main (){
	string text,pattern;
	cin >> text >> pattern;
	int pos = kmp(text,pattern);
	cout << pos << endl;
	return 0;
} 



全部评论

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
03-19 21:39
门头沟学院 Java
Data_Seven:6 他说的 全是我的词儿啊
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3136次浏览 43人参与
# HR最不可信的一句话是__ #
1014次浏览 32人参与
# MiniMax求职进展汇总 #
24880次浏览 321人参与
# 春招至今,你的战绩如何? #
14676次浏览 136人参与
# AI面会问哪些问题? #
890次浏览 22人参与
# 你的实习产出是真实的还是包装的? #
2704次浏览 52人参与
# 米连集团26产品管培生项目 #
7058次浏览 224人参与
# 沪漂/北漂你觉得哪个更苦? #
1209次浏览 38人参与
# 你做过最难的笔试是哪家公司 #
1123次浏览 20人参与
# AI时代,哪个岗位还有“活路” #
2675次浏览 49人参与
# XX请雇我工作 #
51147次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7965次浏览 43人参与
# 简历第一个项目做什么 #
32067次浏览 357人参与
# 简历中的项目经历要怎么写? #
310896次浏览 4257人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152823次浏览 888人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187553次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64520次浏览 864人参与
# 如果重来一次你还会读研吗 #
229971次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178239次浏览 891人参与
# 你怎么看待AI面试 #
180643次浏览 1295人参与
# 正在春招的你,也参与了去年秋招吗? #
364158次浏览 2641人参与
# 腾讯音乐求职进展汇总 #
160820次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务