字符串集合中相互包含关系算法

本文探讨了在Python中处理字符串集合相互包含关系的三种算法:简单遍历、按长度排序遍历和合并字符串。通过分析各自优缺点,提出通过合并字符串并优化搜索算法来提高效率。在大量数据情况下,可通过预排序和定制化的查找方法进一步优化。
摘要由CSDN通过智能技术生成

字符串集合中相互包含关系算法

先介绍下使用场景,源文件是一个excel表格,要根据某一列的值生成正则表达式,为保证正则表达式的准确性,被包含的数据肯定是不能直接生成正则表达式的,例如,产科和妇产科,如果直接生成正则表达式,那么所有妇产科应该匹配到的字符串都能被产科所匹配到,所以将需要实现一种算法,能对整个字符串数组进行相互包含关系的校验
python实现

备选算法:

  • 简单遍历
  • 先按长度排序再遍历
  • 先合并成一个字符串

简单遍历

介绍:
这种介绍起来最简单,就简单的对字符串数组进行遍历,判断当前字符串A是否与其后面的任意字符串存在包含关系(双向判断),长度短的肯定不能包含长度更长的,所以使用判断一次就好,另外,由于是双向判断,所以每次只用比较位于其后的即可
优点:
实现简单
缺点:
慢,特别慢,字符串数量越多,效率阶乘降低


先按长度排序再遍历

介绍:
按长度排序或者叫做按长度分类更合适,根据字符串长度,将源字符串集合分成若干集合,预先需要确定所有数据不重复,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值