微信公众号:振振有CI
振振有辞ci,分享AI、BI中的一些技术心得。
间或来点小诗词附庸风雅!
欢迎大家关注。
高性能解决有序集合的连续匹配问题
场景:
A集合有8个元素:ali、boy、c、dog、e、f、g、h,
B集合有5个元素:boy、c、dog、e、h
问B中是否包含连续4个以上的A集合元素?是即符合要求。
查阅网络资料甚至咨询论坛、技术群里的朋友,尽管方法各异,本质上还是循环遍历,最多考虑了利用bitmap提升下循环匹配性能。
难点:连续4个以上的计算与匹配
不论是集合还是字符串,4个连续的判断与匹配基本都依赖循环遍历算法,不论是KMP还是Boyer-Moore算法,如果一行记录都需要这么复杂的循环才能得出,那对千万级甚至亿级的数据时的性能?
绝对原创的独特解法
《SQL沉思录》一书明确指出,循环是过程化的思维方式,数据集是集合思维方式,就不用能集合思维也就是sql的方式高效解决问题?
但没有现成轮子的时候,那只有自己发明轮子。
连续4个,试试分区函数的滑动分窗?当原、现尺码都高效拆分出连续4个后,匹配就是一个简单的join关联问题。
思路:
1、滑动分窗求出连续4个元素
2、两表关联,能关联到即为合格
实现代码
1、构造2张测试表
2、构造连续4个元素集合
3、匹配
下面的是我的公众号二维码图片,欢迎加我,一起学习,一起交流。
领取专属 10元无门槛券
私享最新 技术干货