引言
如果说项目中有用户输入的内容,那么大家肯定会需要敏感词过滤,那么大家项目中的敏感词都是怎么过滤的呢?
例如这里有这些敏感词 "java",“python”,“go”,“js”,"c++" ,那么怎么从下面的句子中过滤出这个敏感词呢? "I want to learn ja java, python, js, c++.ja"
字符串匹配?
暴力匹配?
那简单啊,直接字符串匹配不就行了,于是上代码:
public class Main {
public static void main(String[] args) {
String str = "java";
String main = "I want to learn ja java, python, js, c++.ja";
int i = 0;
int j = 0;
while (i < main.length() && j < str.length()) {
if (main.charAt(i) == str.charAt(j)) {
i++;
j++;
} else {
j = 0;
i++;
}
}
if (j == str.length()) {
System.out.println("匹配成功");
}
}
}
那这个效率未过低了吧。没事,不是有kmp算法吗,我们可以优化。kmp算法的文章特别多,大家可以自行去百度,这里由于不是介绍kmp,所以不详细,只列出来kmp算法。
KMP?
public class Main {
public static void main(String[] args) {
String str = "javaja";
String main = "I want to learn ja javaja, python, js, c++.ja";
int[] next