简单Kmp字符串匹配:
编写一个程序,提示用户输入两个字符串,检测第二个字符串是否是第一个字符串的字串。
代码如下:
import java.util.Scanner;
class Class22{
//KMP字符串匹配算法
public static void main(String[] args){
String s1="1123456548";
String s2="123";
//for循环时优化遍历的次数
//遍历时只需要遍历长数组比短数组的部分是否相等
for(int i=0;i<s1.length()-s2.length()+1;i++){
if(s1.charAt(i)==s2.charAt(0)){
boolean flag=true;
for(int j=1;j<s2.length();j++){
if(s1.charAt(i+j)!=s2.charAt(j)){
flag=false;
break;
}
}
if(flag){
System.out.println("包含");
return;
}
}
}
System.out.println("不包含");
}
}
代码总结:
该代码的主要在于判断的时候想清楚判断的时机和流程,当第二个数组的首字符和第一个字符串中的一个字符相等时,进入第二个判断流程,当第二个字符串的所有的字符和第一个字符串中的一部分的字符相等时,就是第一个字符的字串。如果有一个不同就不是自串。