add Boyer-moore algorithm, pretty hard to remember