我需要在比特流中扫描16位字.不保证在字节或字边界上对齐.
实现这一目标的最快方法是什么?有各种蛮力方法; 使用表和/或移位,但是有没有"bit twiddling shortcuts"可以通过给出yes/no /也可以包含每个字节或单词到达时的标志结果来减少计算次数?
C代码,内在函数,x86机器代码都很有趣.
我正在寻找一种用于搜索目的的快速算法,这是一个巨大的字符串(它是一个由数亿到数十亿个字符组成的生物基因组序列).
该字符串中只有4个字符{A,C,G,T},"A"只能与"T"配对,而"C"与"G"配对.
现在我正在寻找两个子串({minLen,maxLen}之间的子串的长度约束,以及{intervalMinLen,intervalMaxLen}之间的间隔长度),它们可以反平行地相互配对.
例如,字符串是:ATCAG GACCA TACGC CTGAT
约束:minLen = 4,maxLen = 5,intervalMinLen = 9,intervalMaxLen = 10
结果应该是
"ATCAG"配对"CTGAT"
"TCAG"配对"CTGA"
提前致谢.
更新:我已经有了确定两个字符串是否可以相互配对的方法.唯一的问题是进行详尽的搜索是非常耗时的.