当前位置: 首页 > news >正文

BF算法Java

BF算法

  • 代码实现
  • 运行结果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/91e0700ed8144fcc87e8f8d222c0e0b8.png)

BF算法又称暴力算法,运算过程相对较慢,但是也是基础的算法,这里我们可以给两个字符串,arr1 arr2
由arr1中来找到arr2这个子串
我们可以看到arr2中是abcd组成的字符串需要在arr1中找到并返回arr1中这个子串的初始下标值,如果没有找到返回-1

在这里插入图片描述

我们可以将两个数组各分配一个局部变量i和j如果arr1中有arr2的字符串则arr1和arr2各自+1来看下一个字符是否想等
在这里插入图片描述
当我们的arr1中没有完全包含arr2这个子串,arr1!=arr2下标则arr2需要从0开始,重新匹配,而arr1我们的初始地址已经找过了,所以我们需要i-j+1
在这里插入图片描述
这样重复下去我们就可以找到我们的子串了

代码实现

public class test {public static int BF(String str,String sub){int lenStr=str.length();int lenSub=sub.length();if(str==null||sub==null){//两个字符串其中一个为空,返回-1return -1;}int i=0;//遍历主串int j=0;//遍历子字符串while(i<lenStr&&j<lenSub){if(str.charAt(i)==sub.charAt(j)){//两个下标相同就++;i++;j++;}else {j=0;i=i-j+1;}}if(j>=lenSub){//因为j遍历的是子串,当遍历完j一定在子串+1位置说明跑完子串return i-j;}return -1;}public static void main(String[] args){String arr1="abcacbabcdef";String arr2="abcd";System.out.println(BF(arr1,arr2));}
}

运行结果在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HarmonyOs
  • 山 寨 币
  • 虚拟化技术实现;容器和虚拟化;一种软件实现各类厂商多种型号算力资源池化和虚拟化的;
  • STL简介、什么是STL、STL的六大组件、STL缺陷等的介绍
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • 20240831-PostgreSQL小课持续更新
  • 神仙公司名单(北京篇)
  • Java-互斥锁死锁释放锁
  • Linux之nginx部署项目【前后端分离】(外加redis安装)
  • Elasticsearch在高并发下如何保证读写一致性
  • 【面试05】PID控制算法
  • git创建本地分支并track跟踪远程分支
  • 两步解决yum无法安装软件问题:Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
  • 云动态摘要 2024-09-04
  • Spring Security中的BCrpt介绍,及其与SHA-256的对比
  • Google 是如何开发 Web 框架的
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • AWS实战 - 利用IAM对S3做访问控制
  • ES10 特性的完整指南
  • ReactNativeweexDeviceOne对比
  • SpiderData 2019年2月16日 DApp数据排行榜
  • spring + angular 实现导出excel
  • spring boot下thymeleaf全局静态变量配置
  • vue 配置sass、scss全局变量
  • 半理解系列--Promise的进化史
  • 二维平面内的碰撞检测【一】
  • 使用 Xcode 的 Target 区分开发和生产环境
  • -- 数据结构 顺序表 --Java
  • 我从编程教室毕业
  • 因为阿里,他们成了“杭漂”
  • 用jquery写贪吃蛇
  • 由插件封装引出的一丢丢思考
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​Java并发新构件之Exchanger
  • (1)(1.13) SiK无线电高级配置(五)
  • (2022 CVPR) Unbiased Teacher v2
  • (C++哈希表01)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (搬运以学习)flask 上下文的实现
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)软件测试分工
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十)Flink Table API 和 SQL 基本概念
  • (十一)手动添加用户和文件的特殊权限
  • (四) 虚拟摄像头vivi体验
  • (自用)交互协议设计——protobuf序列化
  • ***监测系统的构建(chkrootkit )
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .chm格式文件如何阅读
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 解决重复提交问题
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .Net7 环境安装配置