字符串:暴力子字符串查找算法
来源:互联网 发布:欧洲为什么发达 知乎 编辑:程序博客网 时间:2024/06/04 22:56
暴力子字符串查找算法的名字虽然很霸气,但是效率不是很高。是一种简单、粗暴的查找方式。
在最坏的情况下,暴力子字符串查找算法在长度为N的文本中查找长度为M的模式需要~NM次字符比较。
核心思想:就是对主串中的每一个字符作为子串的开头,与要匹配的字符串进行匹配。对大串做大循环,每个字符开头做子串的长度的小循环,知道匹配成功或者全部遍历完成为止。
* 暴力字符串查找 * * @author Donald-Hu * 2016/8/7 */ public class Violence { public static void main(String[] args) { String txt = "adldgkclsldajdc"; String pat = "gkc"; System.out.println(Violence.search(pat, txt)); System.out.println(Violence.searchother(pat, txt)); } /** * 使用暴力字符串查找方式,在txt中查找和pat匹配的子字符串 * * @param pat * 匹配的模板字符串 * @param txt * 查找的字符串 * @return 模板字符串第一次出现的位置 */ public static int search(String pat, String txt) { int M = pat.length(); int N = txt.length(); // 逐个位置匹配模式字符串 for (int i = 0; i < N; i++) { int j; for (j = 0; j < M; j++) { if (txt.charAt(i + j) != pat.charAt(j)) { break; } } // 找到了匹配的字符串 if (j == M) { return i; } } return N; } /** * 使用暴力字符串查找方式的另外一种实现 * * @param pat * 匹配的模板字符串 * @param txt * 查找的字符串 * @return 模板字符串第一次出现的位置 */ public static int searchother(String pat, String txt) { int M = pat.length(); int N = txt.length(); int i; int j; // 逐个位置匹配模式字符串 for (i = 0, j = 0; i < N && j < M; i++) { if (txt.charAt(i) == pat.charAt(j)) { j++; } else { i -= j; j = 0; } } // 找到了匹配的字符串 if (j == M) { return i - M; } else { return N; } } }
0 0
- 暴力子字符串查找算法
- 字符串:暴力子字符串查找算法
- 暴力子字符串查找
- 算法:暴力字符串查找
- 子字符串查找(上):从暴力算法到KMP
- 子字符串查找算法
- KMP子字符串查找算法
- 查找子字符串的算法
- KMP算法:查找子字符串
- 暴力字符串查找
- 字符串--子字符串查找
- 子字符串查找或匹配(暴力法,KMP)
- 查找--子字符串查找
- 查找子字符串----KMP算法深入剖析
- 朴素匹配算法-子字符串的查找
- 查找子字符串----KMP算法深入剖析
- KMP算法字符串查找子串
- KMP子字符串查找算法.java
- mob 之 ShareSDK第三方分享
- 12.ATL中实现可连接对象和接收器
- multiple definition of 问题解决方法
- 无限级联树形菜单
- 硬币的表示法
- 字符串:暴力子字符串查找算法
- 构造者模式
- 代理模式
- sql server 2005 中数据库表 的创建 ,查看表 属性,表的名称重命名,情况表中信息,删除表 ; 表中列重命名,添加新列,修改列的数据类型,删除列,设置列的主键外键
- 转一篇很牛的文章,说明string、char和char*、char**等的使用
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- Mac下java开发的环境变量配置
- (34)字符串函数 多多练习
- JobHarvest——虚拟机性能监控实例