前言:
当前兄弟们对“最佳字符串匹配算法”大致比较关怀,各位老铁们都想要学习一些“最佳字符串匹配算法”的相关文章。那么小编同时在网络上收集了一些关于“最佳字符串匹配算法””的相关知识,希望小伙伴们能喜欢,兄弟们快快来学习一下吧!我们在文本处理的过程中, 经常需要在特定文本中, 找到指定文本的位置, 或者确定某个字符串是否在特定文本中出现。
这样的操作, 在perl中一般直接可以使用substr方法或者正则来处理, Perl已经帮我包装好了。
今天我们自己来根据朴素字符串匹配方法来实现字符串查找的功能。
朴素字符串匹配算法就是通过一个循环依次增加偏移量,来确定整个字符串的偏移量,从而确定字符串的具体位置。
具体实现如下:
先定义字符串, 然后将字符串切割成字符数组:
my $long_str = 'hello,easyperl,hello world';my $str = 'easyperl';my @long_str_chars = split '', $long_str;my @str_chars = split '', $str;
这边我们设置一个标签量, 用来确定是否匹配
my $flag = -1;
依次增加偏移量:
OUTER:for my $index(0..@long_str_chars - @str_chars){
对于每次偏移, 依次比较所有对应字符
如果任何一个不对应, 则跳出该循环, 增加偏移量继续:
for my $index_in(0..@str_chars - 1){ next OUTER if $long_str_chars[$index + $index_in] ne $str_chars[$index_in]; }
如果都匹配, 则返回结果, 改变标签值, 提前结束循环
print "result: $index\n"; $flag = 1; last OUTER;}print "result: not found\n" if $flag == -1;
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #最佳字符串匹配算法