KMP算法的java实现

package com.trs.utils;public class KMPStr {/** 在KMP算法中,最难求的就是next函数,如何理解next函数是一个难题,特别是k=next[k],这里* 需要指出的是当p[i]!=p[j]时,我们只有通过回溯将k的值逐渐减小,貌似类似与用到了动态规划的思想 参考网上阮一峰老师的博客讲解的十分详细*/private static int[] getNext(String t) {int[] next = new int[t.length()];next[0] = -1;int j = 0;int k = -1;while (j < t.length() - 1) {if (k == -1 || t.charAt(j) == t.charAt(k)) {j++;k++;next[j] = k;} else {k = next[k];}}for (int i : next) {System.out.print(i + ":");}System.out.println();return next;}public static int kmpStrIndex(String s, String t, int[] next) {int i = 0;int j = 0;while (i < s.length() && j < t.length()) {if (j == -1 || s.charAt(i) == t.charAt(j)) {i++;j++;} else {// i不变,j后退j = next[j];}if (j == t.length()) {return i - j;}}return -1;}}
View Code

 

转载于:https://www.cnblogs.com/peizhe123/p/4875107.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线段分割法实现微信抢红包

无意间看到的一种实现抢红包的方法&#xff0c;于是用C实现了一下。 将一个红包分成 n 份 具体的思路是&#xff0c;将一个红包看作是一个线段&#xff0c;线段的长就是红包总金额&#xff0c;然后在这个线段上随机切 n-1 刀&#xff0c;分成 n 份&#xff0c;然后抢红包的人依…

JAVA多线程和并发基础面试问答(转载)

JAVA多线程和并发基础面试问答 原文链接&#xff1a;http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里&#xff0c;从面试的角度列出了大部分重要的问题&#xff0c…

Linux的学习--crontab

之前了解过一点crontab&#xff0c;前段时间比较闲&#xff0c;就熟悉了一下&#xff0c;今天总结记录一下。 crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于"crontab"…

C++雪花算法实现

看来一下雪花算法的实现方法&#xff0c;用 c试着实现了一下&#xff0c;这里仅仅是实现了算法的流程&#xff0c;但是具体的细节&#xff0c;如并发、多线程访问等等没有具体考虑。 雪花算法的简单讲解参考 #include <sys/select.h> #include <iostream> #includ…

CAlayer层的属性

iOS开发UI篇—CAlayer层的属性 一、position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性&#xff1a;position和anchorPoint property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0) property CGPoint anchorPoint; 称为“定位点”、…

Window Linux下实现指定目录内文件变更的监控方法

转自&#xff1a;http://qbaok.blog.163.com/blog/static/10129265201112302014782/ 对于监控指定目录内文件变更&#xff0c;window 系统提供了两个未公开API&#xff1a;SHChangeNotifyRegister SHChangeNotifyDeregister 分别用于注册Notify以及监视。 同时&#xff0c;还提…

Odoo9发行说明

2015年10月1日&#xff0c;期待已久的Odoo9正式发布。本文是Odoo9正式版发行说明&#xff0c;基于官网资料翻译。 译者: 苏州-微尘原文地址&#xff1a;https://www.odoo.com/page/odoo-9-release-notes译文地址&#xff1a;http://blog.csdn.net/wangnan537/article/details/4…

揭秘史上最完美一步到位的搭建Andoriod开发环境

Windows环境下Android开发环境搭建虽然不难而且网上资料众多&#xff0c;但是众多资料如出一折 忽略了很多细节&#xff0c;最终还是没能达到满意效果。 基本步骤如下&#xff1a;JDK安装、环境变量配置、Eclipse下载、AndoriodSDK下载安装、下载配置ADT但是到这里还不算完美搞…

基于OpenCv的人脸检测、识别系统学习制作笔记之二

在网上找到了一个博客&#xff0c;里面有大量内容适合初学者接触和了解人脸检测的博文&#xff0c;正好符合我目前的学习方面&#xff0c;故将链接放上来&#xff0c;后续将分类原博客的博文并加上学习笔记。 传送门&#xff1a; http://blog.sina.com.cn/s/articlelist_160256…

URL 化

URL化。编写一种方法&#xff0c;将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符&#xff0c;并且知道字符串的“真实”长度。&#xff08;注&#xff1a;用Java实现的话&#xff0c;请使用字符数组实现&#xff0c;以便直接在数组上操作。&#xf…

第一章 00 StringUtil.cpp和StringUtil.hh分析

1 /*2 * StringUtil.hh3 *4 * Copyright 2002, Log4cpp Project. All rights reserved.5 *6 * See the COPYING file for the terms of usage and distribution.7 */8 头文件的说明&#xff0c;以及与版权相关的说明一般都会放置在文件的开始位置 9 #ifndef _LOG4CPP_STR…

【SQL】服务器环境下的SQL

一、大型数据库的三层体系结构 web服务器&#xff1a;比如在淘宝页面上&#xff0c;输入“牛肉干”&#xff0c;就是web服务器来处理&#xff0c;提交给应用服务器。 应用服务器&#xff1a;在获取到“牛肉干”这个请求后&#xff0c;应用服务器决定如何汇集结果&#xff0c;并…

【置顶】全局变量的好处与坏处

近日在做项目的过程中对plsql的使用非常多&#xff0c;主要是编写存储过程实现业务逻辑。但是在coding的过程中遇到非常奇怪的问题。 问题是&#xff1a;在package包头中定义了一个变量&#xff0c;current_time : sysdate,然后在procedure使用这个定义的变量&#xff0c;直接i…

三个线程按顺序输出数字

当 n 3N 时&#xff0c;线程1输出 当 n 3N 1 时&#xff0c;线程2输出 当 n 3N 2 时&#xff0c;线程3输出 最终的输出为 0、1、2、3、4、5、6、7、8、10 #include <iostream> #include <thread> #include <mutex> #include <condition_variable&g…

TextView实现自动滚动滚动.

必须有要四个属性: android:ellipsize"marquee"; android:focusable"true";android"focusableInTouchMode"true";android:singleLine"true"; <TextViewandroid:layout_width"fill_parent"android:layout_height&quo…

用最少数量的箭引爆气球

在二维空间中有许多球形的气球。对于每个气球&#xff0c;提供的输入是水平方向上&#xff0c;气球直径的开始和结束坐标。由于它是水平的&#xff0c;所以y坐标并不重要&#xff0c;因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球…

ExtJS中使用ztree 不显示树的解决办法

最近部门同事碰到一个问题&#xff0c;将ztree嵌入在套了几层Panel的面板中不会正常显示&#xff0c;但是将上层面板换成window就能正常显示&#xff0c;开始以为是所在的外部容器不管嵌套了几层&#xff0c;但是必须最底层是window容器&#xff0c;但是测试后发现不是这样的&a…

寻找小镇的法官

在一个小镇里&#xff0c;按从 1 到 N 标记了 N 个人。传言称&#xff0c;这些人中有一个是小镇上的秘密法官。 如果小镇的法官真的存在&#xff0c;那么&#xff1a; 小镇的法官不相信任何人。 每个人&#xff08;除了小镇法官外&#xff09;都信任小镇的法官。 只有一个人同…

事务的隔离界别

事务的ACID特性&#xff1a; 1、Atomicity原子性 事务操作的不可分割性&#xff0c;要么全部执行&#xff0c;要么回滚。 2、Consistency一致性 数据库在事务处理前后处于的一致性状态。如银行转账&#xff0c;两个账户转账前的状态和转账后的状态必须一致。 3、Isolation隔离…

程序员福利各大平台免费接口非常适用

电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIdsJ_商品ID&type1 ps:商品ID这么获取:http://item.jd.com/954086.html 物流接口 快递接口: http://www.kuaidi100.com/query?type快递公司代号&postid快递单号 ps:快递公司编码:申通”shentong”…