KMP字符串算法演进(一)
2023-02-26 12:27:05 时间
从bp算法开始:
核心思想 循环遍历目标数组 , 如果y[0] == z[0] 则比对y[1] == z[1]
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
public class StrAl { public static void main(String[] args) { String targetStr ="微服务的边界上下文, 使得每一个微服务拥有各自的某一端到端业务场景 (功能)与数据 (数据库) 。n" + "更重要的是: 当微服务X需调用微服务Y, 则微服务X 与微服务Y的边界上下文, 将可避免或降低发生, 当微服务Y 运作失败时, 会影响到微服务 X。"; String str = "微服务"; char[] targetchars = targetStr.toCharArray(); char[] chars = str.toCharArray(); int count = 0; //循环遍历目标数组 for (int i = 0; i <targetchars.length ; i++) { if (targetchars[i]==chars[0]){ //当遍历到targetchars[i]==chars[0] 时, 去循环遍历匹配数组 System.out.println("匹配字符:"+i +"" + targetchars[i]); for (int j = 1; j <chars.length ; j++) { //目标数组和匹配数组比对 if (targetchars[i+j]==chars[j]){ if (j==chars.length-1){ count++; } }else { continue; } } }else { continue; } } System.out.println("共找到"+count); } } 匹配字符:0微 匹配字符:16微 匹配字符:58微 匹配字符:65微 匹配字符:72微 匹配字符:78微 匹配字符:102微 匹配字符:118微 共找到8
思考:
此方法为暴力方法,当目标数组为n,匹配数组为m时,找出问题的复杂度为O(n*m)
疑问点: 当
y[0] != z[0]
y[1] != z[1]
y[2] != z[2] 时, 若z[0] != z[1] != z[2] 所以y[0]~y[2]也对比.
所以应该从匹配数组来看待问题
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- git 命令别名配置
- C和C++安全编码复习
- git 无法提交空目录 ? (.gitkeep 文件的作用)
- PHP 字符串中 {} 的使用
- PowerShell 反弹渗透技巧
- Kali Linux安装AWVS漏扫工具
- brew 安装 nginx 配合PHP工作
- Linux 系统的安全加固
- C/C++ 编写并提取简易 ShellCode
- C/C++ 编写并提取通用 ShellCode
- Linux 系统下提取 ShellCode
- C/C++ 反调试与绕过手法
- C/C++ Inline Hook 钩子编写技巧
- C/C++ 将ShellCode注入进程内存
- Rsync+Inotify 实现数据同步
- NFS实现部署Linux文件共享
- Linux 应用Kickstart部署系统
- C/C++ 数据结构与算法笔记
- Django Web开发基础知识
- Django ORM 数据库常用操作