什么是字符串匹配
暴力解法
KMP算法
具体实现
补充:
KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,用于在一个主串中查找一个模式串的位置。它通过预处理模式串,避免了在匹配失败时重复比较已经匹配的部分,从而提高了匹配效率。
该算法在1977年被提出,取三位贡献者的姓名首字母组成算法名称。
什么是字符串匹配字符串匹配问题是计算机科学中的一个经典问题,其核心目标是在一个较长的文本串(Text)中查找是否存在一个或多个与给定模式串(Pattern)完全相同的子串。
例如:
文本串(T):"ABABDABACDABABCABAB"
模式串(P):"ABABCABAB"
那么模式串可以在文本串的索引11处匹配
暴力解法知道控制语句用法的人都知道,这个问题可以套两层循环来解决,从文本串的第1个字符开始,与模式串逐字符比对,如果发现不匹配,则从文本串的第2个字符开始重新比对,以此类推,该解法时间复杂度为$O(m*n)$,效率较低。
KMP算法KMP算法通过预处理模...
出于科研项目的需求,我需要开发一个能个性化定制界面与功能的BLE手机上位机软件,在经过简单的调研后,主要有以下两种开发路径:
Android Studio
MIT APP Inventor
其中AS需要Java基础,且开发周期长;MIT APP Inventor图形化编程,20min可上手,于是我选择后者,最终也能达到我想要的效果。
选择建议如下:
选 Android Studio:如果你想成为专业开发者,或开发功能复杂、可发布的商业应用。
选 MIT App Inventor:如果你是学生,或只想快速做一个简单应用
于是在B站看了几个包浆的教学视频后,我开始上手制作,过程意外地顺利
首先,你需要明确你的APP要包含哪些模块
如下图所示,在登陆官网后,你可以把你需要的模块在侧边栏拖入主页面
依次描述我的思路
上图中组件1是BLE设备搜索与断联按钮
2是BLE连接状态,3是波形图,4是实时数值,5是清空按钮;
当然也有后端组件Ⅰ,是BLE模块,这个在官网没有,需要下载拓展包,https://iot.appinventor.mit.edu/ 这个网站里可以...
MFCC的核心思想是模仿人耳对声音的非线性感知特性(人耳对低频声音比高频声音更敏感),从而更好地表示语音特征。其流程可以概括为以下步骤:
分帧
目的:语音信号是非平稳信号,其特性是随时间变化的。但在一个非常短的时间段内,可以近似认为是平稳的。分帧就是将长信号切分成许多短片段来分析。
操作:使用一个固定长度的窗口以一定的帧移沿着信号滑动并截取数据。
加窗
目的:减少每一帧信号在其两端处的频谱泄漏,使帧两端平滑地衰减到零,从而降低后续傅里叶变换后旁瓣的强度。
操作:将每一帧信号乘上一个窗函数。
傅里叶变换和功率谱计算
目的:将信号从时域转换到频域。
操作:
对每一帧加窗后的信号进行FFT,得到复数频谱。
然后计算其功率谱(取模的平方)。P = |FFT(frame)|² / N (N是FFT点数)
梅尔滤波器组滤波
目的:模拟人耳的听觉特性。人耳对于不同频率的感知能力是不同的,在低频区域区分度高,在高频区域区分度低。梅尔刻度是一种将实际频率转换为更符合人耳感知的频率刻度。
操作:
定义一组三角带通滤波器(梅尔滤波器组),这些滤波器在梅尔刻度上是等宽的,但在线性频率刻度上是不...
本文记录在算法学习过程中的问题拆解、模型抽象与思路复盘。相比结果,更关注思考路径与方法沉淀,希望通过持续整理,构建稳定的解题框架与认知结构。
1. 数学
2. 数组
3. 链表
4. 哈希散列
5. 栈与队列
6. 类与OOP应用
7. 二叉树
8. 回溯
9. 贪心
10. 动态规划
11. 单调栈
12. 图论
12.1 理论基础
12.2 深度优先搜索理论基础
12.3 广度优先搜索理论基础
12.4 并查集理论基础
12.5 案例
1. 数学###1.1 基础
有一天, 小明收到一张奇怪的信, 信上要小明计算出给定数各个位上数字为偶数的和。例如:5548,结果为12,等于 4 + 8 。小明很苦恼,想请你帮忙解决这个问题
#include <iostream>
using namespace std;
int main(){
int n, sum = 0;
//input
while(cin >> n){
// calculation
while (n != 0){...