字符串集合中相互包含关系算法
先介绍下使用场景,源文件是一个excel表格,要根据某一列的值生成正则表达式,为保证正则表达式的准确性,被包含的数据肯定是不能直接生成正则表达式的,例如,产科和妇产科,如果直接生成正则表达式,那么所有妇产科应该匹配到的字符串都能被产科所匹配到,所以将需要实现一种算法,能对整个字符串数组进行相互包含关系的校验
python实现
备选算法:
- 简单遍历
- 先按长度排序再遍历
- 先合并成一个字符串
简单遍历
介绍:
这种介绍起来最简单,就简单的对字符串数组进行遍历,判断当前字符串A是否与其后面的任意字符串存在包含关系(双向判断),长度短的肯定不能包含长度更长的,所以使用判断一次就好,另外,由于是双向判断,所以每次只用比较位于其后的即可
优点:
实现简单
缺点:
慢,特别慢,字符串数量越多,效率阶乘降低
先按长度排序再遍历
介绍:
按长度排序或者叫做按长度分类更合适,根据字符串长度,将源字符串集合分成若干集合,预先需要确定所有数据不重复,