/**
* @param pattern 模式串:要匹配的短语
* @param input 被匹配的短语输入
* **/
private static boolean indexOf(String pattern, String input){
try{
int n = pattern.length();
int m = input.length();
if(m <= 0 || n <= 0){
return false;
}
if(m < n){
return false;
}
//初始化位置为0
int i = 0;
int j = 0;
//当pattern的索引遍历完全时,表示已经匹配到了字符
while (i < m && j < n){
System.out.println(input.charAt(i) + " === " + pattern.charAt(j));
if(input.charAt(i) != pattern.charAt(j)){
int x = 0;
//获取是否在模式串中存在当前匹配串对应的该字符
for(; x < n; ++x){
if(input.charAt(i) == pattern.charAt(x)){
break;
}
}
x = n - x;
//如果是没有匹配的字符,则直接跳过当前之前的所有字符;否则则将索引置为存在的模式串对应匹配串的所在第一个字符
if(x != 0){
i = i - x + 1;
}else {
i = i + n;
}
j = 0;
}else{
++i;
++j;
}
}
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
boolean matchs = indexOf("海贼王", "我是要成为海贼王的男人还好大");
System.out.println(matchs);
}
网友评论