KMP算法 计算短字符串在长字符串中的第一次出现的位置

String a = "abcd";
String b = "bcdadabcd";
String max = a.length() > b.length() ? a : b;
String min = a.length() < b.length() ? a : b;
String temp = null;
int i = 0;
int j = 0;
int index=-1;
while (i < max.length()&&j<min.length()) {
    Log.i("tag", "i:" + i);
    if (String.valueOf(max.charAt(i)).equals(String.valueOf(min.charAt(j)))) {
        if (j==0){
           index=i;
           if (max.substring(i,max.length()).length()<min.length()){
               index=-1;
               break;
           }
        }
        j++;
        i++;
    } else {
        i = i - (j - 1);
        j=0;
    }
}
Log.i("tag", "index:" + index);

猜你喜欢

转载自blog.csdn.net/zisetiankong123/article/details/79369479
今日推荐