使用Java、Python实现BF(BruteForce)算法

前言:BF(BruteForce)算法是一种朴素的模式匹配算法,是一种效率较低的暴力算法,在Java和Python中都提供了大量对字符串操作的方法或函数(比如indexOf()),因此本篇文章主要是为了方便以Java和Python为主的童鞋们理解该算法。

本人在学习数据结构与算法的时候使用的是C语言,然鹅在Python、Java这类没有办法直接操作内存的语言中C里面的很多数据结构的实现的代码都会有所改变(其实就是没有指针也改变不了多少),但是对于没有接触过C语言的人来说虽然可以看懂(大差不差)但是还是很难受,所以我想既然我3种编程语言都可以写那么在力所能及有时间的情况下就帮各位翻译C语言的经典算法到其他2种语言来造福大众也不是不可…

BF算法图解:核心思想是下标回溯,图片摘录自:橘子橘子橘的博客(2021-02-17-1:08AM)第4副图

话不多说先上代码:

Java语言的实现:

    public static int bruteForce(String strOriginal, String strSub) {
        //在java中不像C语言可以直接对字符串进行操作,我们必须得把封装好的字符串对象拆开成可操作的单个字符;
        char[] str = strOriginal.toCharArray();
        char[] subStr = strSub.toCharArray();
        int s0 = 0;
        int s1 = 0;
        if (subStr.length <= str.length) {
            do if (str[s0] == subStr[s1]) {
                s0++;
                s1++;
            } else {
                s1 = 0;
                s0 = s0 - s1 + 1;
            } while (s0 <= str.length - 1 && s1 <= subStr.length - 1);
        }
        if (s1 != subStr.length) {
            return -1;
        } else {
            return s0 - s1;
        }
    }

Python代码的实现:

def bruteForce(strOriginal, strSub):
    str = list(strOriginal)
    subStr = list(strSub)
    s0 = 0
    s1 = 0
    if len(subStr) <= len(str):
        while s0 <= len(str) - 1 and s1 <= len(subStr) - 1:
            if str[s0] == subStr[s1]:
                s0 += 1
                s1 += 1
            else:
                s1 = 0
                s0 = s0 - s1 + 1
    if s1 != len(subStr):
        return -1
    else:
        return s0 - s1
本篇文章由Rex创建并发布,若有转载文章的需求或发现内容错误、图片侵权等请发送邮件到:[email protected],本人高中生有可能回复没有那么及时,但是看到一定会第一时间处理回复的qwq。

评论

  1. 4月前
    2021-2-22 23:46:04

    嘿嘿

    • Rex 博主
      4月前
      2021-2-26 14:26:22

      好耶!

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇