Python算法:Brute-Force算法查找字符串子串位置

简介: Python算法:Brute-Force算法查找字符串子串位置

d21.2.png

Brute-Force算法,

简称为 BF算法,是一种简单朴素的模式匹配算法,常用于在一个主串 S 内查找一个子串 T 的出现位置。


它的核心思想与操作是:


对于给定的主串 S 与子串 P ,主串 S 的长度为 N,子串 T 的长度为 M ;


首先,将 S[1] 和 T[1] 进行比较;


若相等,则再比较 S[2] 和 T[2] ,一直到 T[M] 为止;


若 S[1] 和 T[1] 不等,则 T 向右移动一个字符的位置,再依次进行比较;

"""
  0 1 2 3 4
S a c b c d
T c d
s = 0 t = 0

S a c b c d
T   c d
s = 1 t = 0

S a c b c d
T   c d
s = 2 t = 1

S a c b c d
T     c d
s = 2 t = 0

S a c b c d
T       c d
s = 3 t = 0

S a c b c d
T       c d
s = 4 t = 1
"""

代码实现

def searchIndex(S, T):

s, t, pos = 0, 0, 0
S_len = len(S)
T_len = len(T)

while (s < S_len and t < T_len):
print(s, t)
if S[s] == T[t]:
s += 1
t += 1
else:
pos += 1
s = pos
t = 0

if t == T_len:
return pos
else:
return -1


print(searchIndex("abdabc", "abc"))
"""
0 0
1 1
2 2
1 0
2 0
3 0
4 1
5 2
3
"""


BF算法 在主串和字串匹配失败时,主串进行的回溯操作会影响效率,回溯之后,主串与字串有些部分比较是没有必要的。这种简单的丢弃前面的匹配信息是 BF算法 之所以效率低效的一个重要因素。



参考:

【数据结构与算法】动画:什么是 BF 算法 ?

            </div>
目录
相关文章
|
6月前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
110 1
|
6月前
|
Python
python实现字符串查找(如:在字符串中查找某个单词)。
python实现字符串查找(如:在字符串中查找某个单词)。
213 0
|
6月前
python-strip() 函数:返回去除字符串两端空格的版本
python-strip() 函数:返回去除字符串两端空格的版本
37 0
|
6月前
|
算法 测试技术 C#
C++算法:字符串中的查找与替换
C++算法:字符串中的查找与替换
|
6月前
|
算法
【面试算法——动态规划 21】正则表达式匹配(hard)&& 交错字符串
【面试算法——动态规划 21】正则表达式匹配(hard)&& 交错字符串
|
算法 语音技术 Python
Python算法:Brute-Force算法查找字符串子串位置
Python算法:Brute-Force算法查找字符串子串位置
112 0
Python算法:Brute-Force算法查找字符串子串位置
|
算法 Java 索引
【算法】给定一个字符串 s 和一些长度相同的单词 words,串联所有单词的子串。要不要来试一试?
给定一个字符串 s 和一些长度相同的单词 words串联所有单词的子串
145 0
【算法】给定一个字符串 s 和一些长度相同的单词 words,串联所有单词的子串。要不要来试一试?
|
存储 算法 C语言
串、串的模式匹配算法(子串查找)BF算法、KMP算法
串、串的模式匹配算法(子串查找)BF算法、KMP算法
|
索引 Python
Python 技术篇-index()字符串倒叙匹配获取索引,字符串切片反向输出,逆向输出字符串
Python 技术篇-index()字符串倒叙匹配获取索引,字符串切片反向输出,逆向输出字符串
360 0
Python 技术篇-index()字符串倒叙匹配获取索引,字符串切片反向输出,逆向输出字符串
LeetCode-58. 最后一个单词的长度(Goland实现)
LeetCode-58. 最后一个单词的长度(Goland实现)
97 0
下一篇
无影云桌面