Java 数据结构与算法系列精讲之字符串暴力匹配
作者:我是小白呀 发布时间:2021-10-06 05:43:27
标签:Java,数据结构,字符串,暴力匹配
概述
从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.
字符串匹配
字符串匹配 (String Matching) 指的是判断一个字符串是否包含另一个字符串.
举个例子:
字符串 “Hello World” 包含字符串 “Hello”
字符串 “Hello World” 不包含字符串 “LaLaLa”
暴力匹配
暴力匹配 (Brute-Force) 的思路:
如果
charArray1[i] == charArray2[j]
, 即匹配成功, i++, j++, 继续匹配下一个字符如果匹配失败, i 重置为
i - (j - 1)
, j 重置成 0, 继续暴力匹配
暴力匹配实现
public class 暴力匹配 {
public static int BruteForce(String str1, String str2) {
// 将字符串转化为char数组
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
// string长度
int length1 = charArray1.length;
int length2 = charArray2.length;
// 调试输出
System.out.println(charArray1);
System.out.println(charArray2);
int i = 0;
int j = 0;
while (i < length1 && j < length2) {
// 判断是否匹配
if (charArray1[i] == charArray2[j]) {
// 各往后挪一位
i++;
j++;
} else {
// 重新匹配
i = i - (j - 1);
j = 0;
}
}
// 匹配完成, 返回index
if (j == length2) {
return i - j;
} else {
return -1;
}
}
public static void main(String[] args) {
// 字符串1
String str1 = "I am little white";
// 字符串2
String str2 = "white";
// 暴力匹配
int result = BruteForce(str1, str2);
System.out.println(result);
}
}
输出结果:
I am little white
white
12
来源:https://iamarookie.blog.csdn.net/article/details/122100621


猜你喜欢
- 使用stream判断两个list元素的属性并输出/*** 使用stream判断两个list中元素不同的item*/@Testpublic v
- 半藏商城中会有一些用户提交了订单但是一直没有支付的情况,之前我是通过quartz定时任务每天的5点扫描未支付订单然后读取用户的邮箱地址发送邮
- private static int previousMuteMode = -1;/** * 来电静音 *
- 这篇文章主要介绍了基于SPRINGBOOT配置文件占位符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- using System;using System.Collections.Generic;using System.IO;using Sy
- 对Java图片处理的内容涉猎不深,言辞简陋望请见谅。java实现色阶调整,即调整图片rgb分量,进而也可以调节图片亮度。测试代码public
- 概述从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.贪心算法贪心算法 (Greedy Algorithm)
- 主要实现的功能:1.程序附带多张拼图随机拼图。2.可手动添加拼图。3.游戏成功判断。4.30秒超时判断。 Puzzle.csus
- SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理微信小程序的接口验证防止非法请求,登录的时候获取openId生
- 1 . pom.xml添加相关依赖<parent> <groupId>org.spring
- 目录前言一、Apache poi1.1 首先添加依赖1.2 导出excel1.2.1 HSSF方式导出(.xls方式)1.2.2 XSSF方
- 本文以实例形式简单讲述了C#对象为Null模式(Null Object Pattern),分享给大家供大家参考。具体实现方法如下:所谓的&q
- 在使用各类App的时候,尤其是在发布朋友圈、微博的时候,都会选择配图,进入手机相册,选择自己想要的照片,作为发布内容的一部分,这里就简单介绍
- 本文实例讲述了Spring和Hibernate的整合操作。分享给大家供大家参考,具体如下:一 web配置<?xml version=&
- 反射允许我们在编译期或运行时获取程序集的元数据,通过反射可以做到:● 创建类型的实例● 触发方法● 获取属性、字段信息● 延迟绑定.....
- 介绍意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更灵活。主要解决:我们扩展一个类常使用继承方式实现,由于继
- 一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest {public
- Java HashSetHashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。
- 前言:SpringBoot版本 : 2.2.6mybatis-generator-maven-plugin版本: 1.4.0plugin 使
- 在之前的章节中,我们都是假设程序中只有一条执行流,程序从main方法的第一条语句逐条执行直到结束。从本节开始,我们讨论并发,在程序中创建线程