zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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]也对比.
所以应该从匹配数组来看待问题

KMP字符串算法演进(一)


本站部分内容转载自网络,版权属于原作者所有,如有异议请联系QQ153890879修改或删除,谢谢!
转载请注明原文链接:KMP字符串算法演进(一)

你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:

1、点击这里立即申请成为腾讯云VIP客户

2、点击这里立即注册成为天翼云VIP客户

3、点击这里立即申请成为华为云VIP客户

4、点击这里立享阿里云产品终身VIP优惠价

喜欢 (0)
[[email protected]]
分享 (0)