字符串匹配
- BF–Brute Force暴力匹配算法 朴素算法
package com.richard.strmatch;
public class BF {
public static boolean isMatch(String main, String pattern) {
boolean flag = false;
for (int i=0; i<=(main.length()-pattern.length()); i++) {
if (main.substring(i,i+pattern.length()).equals(pattern)) {
flag = true;
}
}
return flag;
}
public static void main(String[] args) {
System.out.println(isMatch("abcdde", "cddb"));
}
}
- Rabin-Karp 通过哈希算法将字符串改为值 hash匹配法
package com.richard.strmatch;
public class RK {
public static boolean isMatch(String main, String pattern) {
int ph = strTohash(pattern);
boolean flag = false;
for (int i=0; i<(main.length()-pattern.length()); i++) {
if (ph == strTohash(main.substring(i,i+pattern.length()))) {
flag = true;
}
}
return flag;
}
public static int strTohash(String src) {
int hash = 0;
for (int i=0; i<src.length(); i++) {
hash *= 26;
hash += src.charAt(i)-97;
}
return hash;
}
public static void main(String[] args) {
System.out.println(isMatch("abcdde", "cdd"));
}
}