博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法-KMP-leetcode-java
阅读量:5226 次
发布时间:2019-06-14

本文共 1683 字,大约阅读时间需要 5 分钟。

原理:

示例:leetcode:Implement strStr()

 

1 public class Solution { 2     public String strStr(String haystack, String needle) { 3  4         int i = 0; 5         int hlength = haystack.length(); 6         int nlength = needle.length(); 7  8         if (nlength == 0) { 9             return haystack;10         } else {11             int[] form = KMPform(needle);12 13             while (i <= hlength - nlength) {14                 int j = 0;15                 while (j < nlength) {16                     if (haystack.charAt(i + j) != needle.charAt(j)) {17                         if (j == 0) {18                             i++;19                         } else {20                             i = i + j - form[j - 1]-1;21                         }22                         break;23                     } else if (j == nlength - 1) {24                         return haystack.substring(i);25                     }26                     j++;27                 }28             }29             return null;30         }31     }32     33     public int[] KMPform(String str) {34         int[] form = new int[str.length()];35         form[0] = -1;36         for (int i = 1; i < form.length; i++) {37             int index = form[i - 1];38             while (index >= 0 && str.charAt(i) != str.charAt(index + 1))39             {40                 index = form[index];41             }42             if (str.charAt(i) == str.charAt(index + 1))43             {44                 form[i] = index + 1;45             }46             else47             {48                 form[i] = -1;49             }50         }51         return form;52     }53 54 }

 

转载于:https://www.cnblogs.com/lance-/p/3569471.html

你可能感兴趣的文章
centos 7 上测试网速
查看>>
Delphi AnimateWindow 用法 淡入淡出窗口
查看>>
本地通知
查看>>
页面视图中的按钮操作指向
查看>>
mongoose中给字段添加索引的方法
查看>>
mysqlsh : mysql shell tutorial
查看>>
paas容器云
查看>>
史上最全的第三方 (一)
查看>>
学习笔记39_EF的DAL层(精)
查看>>
tomcat配置
查看>>
linux命令
查看>>
URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
查看>>
springboot读取本地项目文件
查看>>
Asp.net Mvc+MongoDB+Autofac等打造轻量级blog系统(一)
查看>>
ASP.NET Core MVC/WebAPi 模型绑定探索 转载https://www.cnblogs.com/CreateMyself/p/6246977.html
查看>>
Mybatis 模糊查询
查看>>
BOM
查看>>
FireFox升级后FireBug不能使用
查看>>
Codeforces 1178E Archaeology (鸽巢原理)
查看>>
【备忘】linux后台运行和关闭、查看后台任务
查看>>