字符串bf匹配算法java实现
2022/2/2 17:14:06
本文主要是介绍字符串bf匹配算法java实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/** * bf字符串寻找算法 * 算法思想,使用子串对主串进行挨个匹配,如果匹配不正确,则主串向后加1,继续匹配 * 将待匹配的主串和子串做成字符数组,方便匹配使用 */ public class BfSearch { /** * 使用bf算法,在主串t中取匹配子串p * @param t 主串 * @param p 子串 * @return */ public int bf(String t,String p){ /** * 违法的寻找,直接返回-1 * 判定方式:主串长度为0,主串为空,子串长度为0,子串为空或者子串长度大于主串长度,都为非法的查找, * 直接返回 */ if (t.length() == 0 || t == null || p.length() ==0 || p == null || t.length() < p.length()){ return -1; } // 将字符串转成字符数组 char[] t_array = t.toCharArray();// 主串字符数组 char[] p_array = p.toCharArray();// 子串字符数组 // 匹配过程 return match(t_array,p_array); } /** * 字符串匹配过程 * @param t * @param p * @return */ private int match(char[] t,char[] p){ int i = 0; // 设置主串检索下标位置 int j = 0; // 设置子串检索下标位置 int position = 0; // 保留检索后的开始位置 while (i<t.length && j< p.length){ if (t[i] == p[j]){ // 主串位置与子串匹配成功,主串与子串下标均+1; i++; j++; } else { // 匹配失败 i = i - j +1; // 主串索引为当前索引减去子串的索引再+1,是为了实现主串索引在不匹配情况下,向后移动一位的目的 j = 0; // 子串检索,从0开始 } } // 返回匹配到的索引位置 if (i <= t.length){ position = i - p.length; } else { position = -1; } return position; } /** * 测试方法 * @param args */ public static void main(String[] args) { BfSearch bf = new BfSearch(); int bf1 = bf.bf("abcd", "cd"); System.out.println(bf1); } }
这篇关于字符串bf匹配算法java实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器