欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
字符串模式匹配

/**
 * 字符串模式匹配
 */
import java.util.Arrays;

public class StringMatch {
 /**
  * @param string1
  * @param string2
  * @return
  */
 public static int indexOf(String string1, String string2, int pos) {
  int i = pos, j = 0;
  while (i < string1.length()) {
   while (j < string2.length()) {
    if (string1.charAt(i + j) == string2.charAt(j)) {
     j++;
    } else {
     break;
    }
   }
   if (j == string2.length())
    return i;
   else {
    i++;
    j = 0;
   }
  }
  return -1;
 }
 
 public static int indexOfKMP(String string1, String string2, int pos) {
  
  int[] next = new int[string2.length()];
  
  generateNextval(string2, next);
  
  int i = pos, j = 0;
  while (i < string1.length() && j < string2.length()) {
   if (j == -1 || string1.charAt(i) == string2.charAt(j)) {
    //繼續比較后繼字符
    i++;
    j++;
   } else {
    //模式串向右移動(dòng)
    j = next[j];  
   }
  }
  if (j == string2.length())
   //匹配成功
   return i - string2.length();
  else
   return -1;
 }
 
 private static void generateNext(String modelstring, int[] next) {
  int i = 0, j = -1;
  next[0] = -1;
  while (i < modelstring.length() - 1) {
   if (j == -1 || modelstring.charAt(i) == modelstring.charAt(j)) {
    i++;
    j++;
    next[i] = j;
   } else {
    j = next[j];
   }
  }
 }
 
 private static void generateNextval(String modelstring, int[] next) {
  int i = 0, j = -1;
  next[0] = -1;
  while (i < modelstring.length() - 1) {
   if (j == -1 || modelstring.charAt(i) == modelstring.charAt(j)) {
    i++;
    j++;
    if (modelstring.charAt(i) != modelstring.charAt(j))
     next[i] = j;
    else
     next[i] = next[j];
   } else {
    j = next[j];
   }
  }
 }
 
 private static void testGenerateNext() {
  String a = "abaabcac";
  int[] next = new int[a.length()];
  int[] nextval = new int[a.length()];
  generateNext(a, next);
  generateNextval(a, nextval);
  System.out.println(Arrays.toString(next));
  System.out.println(Arrays.toString(nextval));
 }
 
 public static void main(String[] args) {
  System.out.println(indexOfKMP("ababcabcacbab", "abcac", 0));
//  testGenerateNext();
  
 }
}

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
java反轉字符串
KMP算法詳解
字符串搜索算法小結(轉)
Hash算法大全
親密字符串
JAVA字符串截取指定長(cháng)度static 方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久