字符串匹配,这种情况是否有更好的算法
我先来讲讲我目前面临的问题:
随机给一个被查找的字符串,比如:ABCDZ,BCDZ,BBCD,CD,BBCD,BF等,给出的字符串出现二个相同字母的概率只有1%。
一个匹配的字符串列表:BCD,CD,BF,BBCD,BBE...大概共有9个匹配字符串,出现二个相同字母的字符串大概只有2个
现在给出一个被查找的字符串,如果才能快速找到是否包含要匹配的字符串的内容,只要匹配上一个,匹配就结束。
我知道KMP算法可以解决字符串匹配。但我注意到一个现像,KMP的算法最优情况下是:要被查找的字符串的模式看上去要相似的,比如:abcdabceab,匹配的字符串的模式也相似的:ababac,这样跟朴素算法对比,才能完全休现出它的优势来。
而我的面临的情况就是:要被查找的字符串,匹配的字符基本上都是独立出现了,很少说是出现一个字母出现多次的情况(甚至说是没有),如果在这种情况下,朴素算法和KMP算法的时间是一样的,因为KMP的算法还要涉及计算前缀覆盖时间+一个数组,朴素算法性能结果要优于KMP算法。
请问还有没有更优的算法可以解决我现在这种情况?