BF算法Java

news2024/9/24 1:14:23

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){
            //两个字符串其中一个为空,返回-1
            return -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));
    }
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nvidia扩展AI帝国:从芯片到数据中心设计的全面布局

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

HarmonyOS开发实战( Beta5.0)自定义组件冻结功能规范

自定义组件处于非激活状态时&#xff0c;状态变量将不响应更新&#xff0c;即Watch不会调用&#xff0c;状态变量关联的节点不会刷新。通过freezeWhenInactive属性来决定是否使用冻结功能&#xff0c;不传参数时默认不使用。支持的场景有&#xff1a;页面路由&#xff0c;TabCo…

移动UI:成就勋章页面该如何设计,用例子说明。

移动应用的UI成就勋章页面通常是一个展示用户在应用中取得成就和获得勋章的页面。这种页面通常用于激励用户参与应用的活动&#xff0c;增加用户的参与度和忠诚度。 UI设计成就勋章页面时&#xff0c;一般会包括以下元素和功能&#xff1a; 1. 勋章列表&#xff1a; 展示用户…

[SWPUCTF 2022 新生赛]android2-快坚持不下去的第四天

找main函数&#xff0c;MainActivity类名 棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌加密函数 加密过程&#xff0c;key123456789 密文和this.key异或 key为987654321 # 已知信息 enc "棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌" key 987654321# 限制 key 到 16 位范围 masked_key…

springboot+vue集成cas单点登录最详细避坑版讲解

springboot+vue+cas 前言总观问题说明第一种配置方式第二种配置方式拦截器配置重定向问题解决配置前言 本地讲解的是单纯的cas,不掺和springsecurity或者shiro等权限框架 首先说明几点注意事项: cas默认不支持前端分离的,这个后便会讲到,也是最大问题所在;前端vue不能直…

【Java 学习】:内部类详解

详谈Java内部类 &#x1f4c3;&#x1f4c3;本文将通过Java内部类 是什么&#xff0c;为什么被广泛使用&#xff0c;以及又该如何去使用这三个方面来详细讲解其相关知识。 文章目录 1. 内部类是什么 2. 为什么要使用内部类 3. 如何使用内部类 &#x1f349;成员内部类 &…

排列组合常用方法一:捆绑法

别问我排列组合是什么&#xff0c;自己看去 看完排列组合的计算方法&#xff0c;有些萌新就会问了&#xff0c;哎&#xff1f;有些题可不像单纯的排列组合哦&#xff0c;题目可能会提出各种奇怪的要求&#xff0c;真是五花八门耶......别急&#xff0c;接下来介绍一个方法&…

【进阶】面向对象之继承(二)

文章目录 一丶子类到底能继承父类中的哪些内容二丶继承中:成员变量的访问特点三丶练习代码呈现 四丶总结 一丶子类到底能继承父类中的哪些内容 构造方法是否可以被继承? 不可以 成员变量是否可以被继承? 可以 成员方法是否可以被继承? 可以,只有虚方法可以被继承 二丶继…

内核头文件, makfile 传参

1 内核头文件&#xff0c;主要指的是&#xff0c; 在板卡上的系统上直接 &#xff0c;编译驱动模块&#xff0c;而不是在虚拟机的内核源码中 去编译内核模块。 ------------------------------------------------------------------------------------------------------------…

将x减到零的最小操作数问题

欢迎跳转我的主页&#xff1a;羑悻的小杀马特-CSDN博客 目录 一题目简述&#xff1a; 二题目思路&#xff1a; 三解答代码&#xff1a; 一题目简述&#xff1a; leetcode题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二题目思路&#xff1a; 首先这道题…

如何在国内下载llama模型

由于项目需求要下载llama模型&#xff0c;本来觉得这是个很简单的事情&#xff0c;直接去huggingface上下载就行&#xff0c;但是没想到遇到了重重问题&#xff0c;于是写下这篇博客记录一下&#xff0c;希望对别人也有帮助&#xff01; 刚开始搜到的教程是官方给出的&#xf…

C++笔记---string类(简单地使用)

1. string类介绍 string类是C标准库中给出的一种类类型&#xff0c;其目的是为了代替C语言中的字符串。 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是…

基于vue框架的车辆交易管理系统n5xwr(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,汽车品牌,汽车信息,汽车标签,特价汽车 开题报告内容 基于Vue框架的车辆交易管理系统开题报告 一、研究背景与意义 随着汽车市场的蓬勃发展和消费者购车需求的日益增长&#xff0c;车辆交易活动变得愈发频繁和复杂。传统的车辆交…

工业主板在轨道交通中的应用特点

工业主板在轨道交通中的应用特点主要体现在以下几个方面&#xff1a; 一、强大的处理能力 高性能处理器&#xff1a;工业主板通常搭载高性能的处理器&#xff0c;如飞腾D2000八核CPU等&#xff0c;这些处理器能够高效处理轨道交通系统中的大量数据&#xff0c;确保系统运行的…

Python实战: 写入 Excel 的多个 Sheet

更多内容 个人网站&#xff1a;孔乙己大叔 一、引言 在处理大型数据集或需要向非技术用户展示分析结果时&#xff0c;Excel 是一种广泛使用的工具。然而&#xff0c;手动创建包含多个 Sheet 的 Excel 文件既耗时又容易出错。幸运的是&#xff0c;Python 提供了自动化这一过程的…

51单片机仿真单只共阳级数码管循环显示0-9

51单片机仿真单只共阳级数码管循环显示0-9 单片机AT89C51控制7段共阳数码管的实验报告 一、实验目的 本实验旨在通过使用AT89C51单片机和7段共阳数码管&#xff0c;学习如何编写控制程序以及实现数码管的动态显示。通过此实验&#xff0c;加深对单片机基本原理和实际应用的理…

进程间通信方式(共享内存、信号灯集、消息队列)

共享内存 特点 1&#xff09;共享内存是一种最为高效的进程间通信方式&#xff0c;进程可以直接读写内存&#xff0c;而不需要任何数据的拷贝。 2&#xff09;为了在多个进程间交换信息&#xff0c;内核专门留出了一块内存区&#xff0c;可以由需要访问的进程 将其映射到自己的…

1.第二阶段x86游戏实战2-前言

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本次会有100章左右&#xff0c;会从0基础开始&#xff0c;内容有找游戏中的数据、分析游戏中的数据&…

C++ | Leetcode C++题解之第389题找不同

题目&#xff1a; 题解&#xff1a; class Solution { public:char findTheDifference(string s, string t) {int ret 0;for (char ch: s) {ret ^ ch;}for (char ch: t) {ret ^ ch;}return ret;} };

REAL-FAKE: EFFECTIVE TRAINING DATA SYNTHESISTHROUGH DISTRIBUTION MATCHING 论文学习

这篇文章主要讲的是生成数据在模型训练中的作用&#xff0c;对于接下来要研究的生成多模态数据具有重要的作用。 文章摘要首先讲生成数据很重要&#xff0c;但在训练高级的模型的时候效果不好。论文主要研究的是这背后的原理并且证明了生成数据的作用。 介绍部分&#xff0c;…