📄 ex7_3.java
字号:
//7.3 检测字串
import javax.swing.JOptionPane;
public class Ex7_3{
public static void main (String[] args) {
String str1=JOptionPane.showInputDialog(null, "请输入第一个字符串:",
" Ex7_3 ", JOptionPane.QUESTION_MESSAGE);
String str2=JOptionPane.showInputDialog(null, "请输入第二个字符串:",
" Ex7_3 ", JOptionPane.QUESTION_MESSAGE);
if(IsSubStr(str1,str2))
System.out.println(str1+"是"+str2+"的字串");
else
System.out.println(str1+"不是"+str2+"的字串");
}
public static boolean IsSubStr(String str1,String str2){//利用KMP算法
int[] fail=new int[str1.length()];//fail[]存储字符串下次比较时的下标位置,只需通过模式串即str1得到
fail[0]=-1;
for(int i=1;i<str1.length();i++){//计算fail[]的函数
int j=fail[i-1];
while(str1.charAt(i)!=str1.charAt(j+1)&&j>=0) j=fail[j];
if(str1.charAt(i)==str1.charAt(j+1)) fail[i]=j+1;
else fail[i]=-1;
}
int i=0,j=0;
while(i<str1.length()&&j<str2.length())//字符串比较
if(str1.charAt(i)==str2.charAt(j)){
i++;
j++;
}
else if(i==0) j++;
else i=fail[i-1]+1;
if(i<str1.length())
return false;
else
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -