最近 Android 做了一个全文关键字高亮的功能,直接用了 Java 现成的 API 解决了,在查阅资料的过程中得知还有几种匹配算法:BF、RK、KMP、BM、Sunday,有空就做了一些了解。这里记录一下防止忘记,阮一峰大神关于这些算法的博客写的很好。
BF
暴力检索,这种方法最容易想到,也是最容易实现的,从首字母开始挨个的将关键字和做比对。用下面的图片就能只管的说明(图片来自阮一峰大神的博客)
代码实现:
package other.string.textmatch;
/**
* 暴力检索
*/
public class BFMatch {
/**
* 暴力检索,输出匹配到的关键字的起始索引(包括起始索引在内,因为有的是不包括结尾下标在内,所以这里说明一下)
*
* @param originText 原始文字
* @param keyword 要匹配的关键字
*/
public static void BFMatch(String originText, String keyword) {
char originChar;
for (int i = 0; i < originText.length(); i++) {
for (int j = 0; j < keyword.length(); j++) {
if (i + j >= originText.length()) break;
originChar = originText.charAt(i + j);
if (originChar != keyword.charAt(j)) {
break;
}
if (j == keyword.length() - 1) {
System.out.println("找到匹配字符串,起始:" + i +
" 终止:" + (i + keyword.length() - 1));
}
}
}
}
public