刘航宇 发布的文章 - 我的学记|刘航宇的博客
首页
📊归档
⏳时光机
📬留言
🐾友链
资助名单
推荐
🎓843课程班
🎵音乐
🏞️壁纸
搜 索
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
12,816 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
7,211 阅读
3
【高数】形心计算公式讲解大全
6,679 阅读
4
【1】基于STM32CubeMX-STM32GPIO端口开发
5,190 阅读
5
如何判断运放是工作在线性区还是非线性区
5,050 阅读
🌻微语&随笔
励志美文
我的随笔
写作办公
📖电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
🗜️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
搜 索
标签搜索
嵌入式
ASIC/FPGA
VLSI
SOC设计
机器学习
天线设计
C/C++
EDA&虚拟机
软件算法
小实验
信号处理
电子线路
通信&射频
随笔
笔试面试
硬件算法
Verilog
软件无线电
Python
DL/ML
刘航宇
嵌入式系统&数字IC爱好者博客
累计撰写
302
篇文章
累计收到
528
条评论
首页
栏目
🌻微语&随笔
励志美文
我的随笔
写作办公
📖电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
🗜️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
页面
📊归档
⏳时光机
📬留言
🐾友链
资助名单
推荐
🎓843课程班
🎵音乐
🏞️壁纸
用户登录
登录
刘航宇(共302篇)
找到
302
篇与
刘航宇
相关的结果
2021-02-01
【励志视频】人为什么要活着?请不负此生!
请不负此生!
2021年02月01日
114 阅读
0 评论
2 点赞
2021-01-28
KMP遍历算法
KMP算法是一种改进的字符串匹配算法,关键是利用匹配后失败的信息,尽量减少模式串(W)与主串(T)的匹配次数以达到快速匹配的目的。具体实现就是实现一个next() 函数,函数本身包含了模式串的局部匹配信息。时间复杂度 O(m+n)。 如果考虑一般的方法,我们可以将T[0]和W[0]进行匹配,如果相同则匹配下一个字符,直到出现不相同的情况,此时我们会丢弃前面的匹配信息,然后把T[1]跟W[0]匹配,循环进行,直到主串结束,或者出现匹配成功的情况。这种丢弃前面的匹配信息的方法,时间复杂度为O(m*n)。 学习代码:#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; //get_next函数 vector<int> get_next(string b) //用vector来保存子串b的next数组 { vector<int> result; //添加元素并且默认赋值为0,建立一个空的容器就 int i, j; i = 0; j = -1; result.push_back(-1); //将容器首元素赋值,作为标识使用 while (i < b.size() - 1) { if (j == -1 || b[i] == b[j]) //b[i]表示后缀的单个字符,b[j]表示前缀的单个字符 { ++i; ++j; //这里的其实是优化重复的字符 //可以直接用result.push_back(j);代替下面的判断语句 if (b[i] != b[j]) result.push_back(j); else if (i == 1) result.push_back(j); else result.push_back(result[j]); } else j = result[j]; //若字符不同,前缀字符回溯 } return result; } //KMP函数 int KMP(string a, string b) { vector<int> next = get_next(b); //调用get_text函数 int i = 0; int j = 0; //注意size函数返回的类型是string::size_type是无符号数 //若i<主串的长度且j<子串的长度时,循环继续 while (i < (int)a.size() && j <(int)b.size()) { if (j == -1 || a[i] == b[j]) //两字母相等则继续,相对于朴素算法增加了 { ++i; ++j; } else { j = next[j]; //若不相等,j退回合适的位置 } } if (j == b.size()) { //这里返回的是匹配字符开始的下标位 return i - j; } else { return -1; } } int main() { string str; cout << "enter the string:"; cin >> str; string pattern; cout << "enter the pattern:"; cin >> pattern; int result = KMP(str, pattern); cout << result << endl; }
2021年01月28日
197 阅读
0 评论
0 点赞
1
...
25
26