[理工] 算法String_matching

楼主: joy7658x348 (joy7658x348)   2019-07-05 11:42:31
大家好:
想请问一个找字串比对的问题
例如:
字串: ABCDCBA
我要找 BC
但同时BC也等于CB
也就是找BC出来的结果不会=1,而是=2 (BC and CB)
我想到的方式是先找BC的全排列,也就是BC跟CB两种 O(n!)
之后再用KMP去分别找BC跟CB O(m+n)
这样就会是1+1=2,就能找到2组
请问这样的想法是不是会比较慢,还是有办法能够就一次找出两种组合?
谢谢大家
作者: mathtsai (mathtsai)   2019-07-05 13:47:00
可以先详细叙述你的问题吗
作者: Aa841018 (andrew)   2019-07-05 14:19:00
以你的例子来说,只要在scan时判断遇到非B and C时跳过继续扫,然后除此之外一律+1,累计到1时之后只要没有出现BC以外的字母,都可算是match,因为含有BC的所有组合都算是目标!然后碰到BC以外的字母你再重新计算…这样应该…快一点吧?

Links booklink

Contact Us: admin [ a t ] ucptt.com