在字符串的匹配时,单模式串的匹配,最有效或者最简单的就是暴力破解.
public class BF {
public static void main(String[] args) {
System.out.println(bfMatch("dsjfkdfdjk", "jf"));
}
/**
*
* @param text 主串
* @param pattern 模式串
* @return
*/
public static int bfMatch(String text, String pattern){
int textLen = text.length();
int patternLen = pattern.length();
if(patternLen > textLen){
return -1;
}
for(int i = 0; i <= textLen - patternLen; i++){
int j = 0;
for(; j < patternLen; j++){
if(text.charAt(i + j) != pattern.charAt(j)){
break;
}
}
if(j == patternLen){
return i;
}
}
return -1;
}
}
实现了一个类似于indexOf的功能。
假设主串的长度为n,模式串的长度为m,那么最坏情况下的时间复杂度为O(n*m),例如 主串为 aaaa.....aaab,模式串为aaaaab。当然实际情况下不会这样,因为实际情况下的主串和模式串都不会太长,而且一般中途匹配不上就会退出了,不会每次都匹配m次