[LintCode] strStr [KMP brute force]
Problem
For a given source string and a target string, you should output the first index(from 0) of target string in source string.
If target does not exist in source, just return -1.
Note
我终于找到了比较好的KMP算法。
http://alice-alicesspace.blogspot.com/2015/07/strstr-kmp-solution-java.html
Solution
class Solution {public int strStr(String source, String target) {//write your code hereif (source == null | target == null) {return -1;}int i, j;for (i = 0; i < source.length() - target.length() +1; i++) {for (j = 0; j < target.length(); j++) {if (source.charAt(i+j) != target.charAt(j)) {break;}}if (j == target.length()) {return i;}}return -1;}
}
class Solution {public int strStr(String source, String target) {//write your code hereif (source == null || target == null) {return -1;}if (target.length() == 0) {return 0;}int[] prefix = new int[target.length()];int k = 0;for (int i = 1; i < target.length(); i++) {while (k > 1 && target.charAt(k) != target.charAt(i)) {k = prefix[k-1];}if (target.charAt(i) == target.charAt(k)) k++;prefix[i] = k;}k = 0;for (int i = 0; i < source.length(); i++) {while (k > 1 && source.charAt(i) != target.charAt(k)) {k = prefix[k-1];}if (target.charAt(k) == source.charAt(i)) {k++;}if (k == target.length()) {return i - k + 1;}}return -1;}
}
[LintCode] strStr [KMP brute force]相关推荐
- Brute Force算法介绍及C++实现
字符串的模式匹配操作可以通过Brute Force算法来实现.字符串匹配操作即是查看S串(目标串或主串)中是否含有T串(模式串或子串),如果在主串中查找到了子串,则模式匹配成功,返回模式串中的第一个字 ...
- Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)
今天介绍两种基础的字符串匹配算法,当然核心还是熟悉一下Go的语法,巩固一下基础知识 BF(Brute Force) RK(Rabin Karp) 源字符串:src, 目标字符串:dest: 确认des ...
- 吴昊品游戏核心算法 Round 7 —— 熄灯游戏AI(有人性的Brute Force)(POJ 2811)
暴力分为两种,一种属于毫无人性的暴力,一种属于有人性 的暴力.前面一种就不说了,对于后面一种情况,我们可以只对其中的部分问题进行枚举,而通过这些子问题而推导到整个的问题中.我称之为有人性的Brute ...
- DVWA学习(三)Brute Force(暴力破解)
BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符:若不相 ...
- JavaScript实现MaximumSubarray最大子阵列(Brute Force蛮力解决方案)算法(附完整源码)
JavaScript实现MaximumSubarray最大子阵列(Brute Force蛮力解决方案)算法(附完整源码) bfMaximumSubarray.js完整源代码 bfMaximumSuba ...
- DVWA Brute Force(low)
0x00 设置安全水平 小白刚接触DVWA,先从简单的开始 00x1 Brute Force(蛮力:爆破) 0x02 开启firefox代理 首选项 0x03 使用brupsuite爆破 输入: ad ...
- DVWA 之暴力破解攻击(Brute Force)
暴力破解(Brute Force)的意思是攻击者借助计算机的高速计算不停枚举所有可能的用户名和密码,直到尝试出正确的组合,成功登录系统.理论上,只要字典足够大,破解总是会成功的.阻止暴力破解的最有效方 ...
- Hydra – Brute Force HTTP(S)
In this tutorial, I will be demonstrating how to brute force authentication on HTTP and HTTPS servic ...
- Unit 2: Password Cracking 2.1 Password Cracking Brute Force Attacks
>> In a future unit, we'll learn how attackers can get possession of a database containing has ...
最新文章
- Android Studio项目引入外部库注意事项(PullToRefresh)
- mysql 拼接sql批量执行_Mysql 学习笔记之 SQL 执行过程
- python爬虫入门-python爬虫入门,8分钟就够了,最简单的基础教学!
- MySQL binlog日志
- 获取RadioButton选中的值
- 网易会议开源指南 | 极速构建你的专属会议软件!
- java 动态绑定原理_详解Java动态绑定机制的内幕(图)
- 18 Context与组合的应用场景与使用问题
- 《深入理解java虚拟机》第1章 走近Java
- 深度学习超分辨率最新综述:一文道尽技术分类与效果评测
- 单链表反转(递归和非递归)
- 《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.7 关于对象图
- 数据挖掘、机器学习、深度学习、推荐系统、自然语言处理的区别与联系
- Javascript 也玩多线程
- c性能大容量cket_水合低共熔电解质有助于改善水性锌电池的性能
- 模糊控制——(1)基本原理
- 智慧工厂管理平台建设,智慧工厂管理系统开发
- MOT任务中JDE(Jointly learns the Detector and Embedding model)算法解读
- sql server2008 批量删除发生:查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询
- 2019.08.12【NOIP提高组】模拟 B 组 模拟+DP+差分约束、spfa
热门文章
- 在长文本中当中使用正则表达式匹配限定长度范围的数字串的方法
- Python进阶之路:namedtuple
- 真实序号索引与标签索引的使用
- php lararel,laravel整合tinymce和ckeditor编辑器,并用elfinder上传图片
- 百练OJ:4151:电影节
- 信息系统项目管理师优秀论文:项目进度管理
- 设计模式-----单例模式优缺点及使用场景
- 用springmvc作接口时返回json数据中文乱码
- RedisDeskTopManager连接时提示:can't nonnect to redis-server
- Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)