Advertisement
DVS_studio

kd24_shop_spy search

Apr 4th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.94 KB | None | 0 0
  1. private int compResult(String st1, String st2) {
  2.   String st0;
  3.   int i, j, k1, k2, l0, l1, l2, lmin, lminc, lm, lmm, mltot, ml, mp, mc, mpp, mlp;
  4.   st1 = PreProcessString(st1);
  5.   st2 = PreProcessString(st2);
  6.   lmin = 3;
  7.   l1 = st1.length();
  8.   l2 = st2.length();
  9.   if (l1 > l2) {
  10.     st0 = st1;
  11.     l0 = l1;
  12.     st1 = st2;
  13.     l1 = l2;
  14.     st2 = st0;
  15.     l2 = l0;
  16.   }
  17.   mpp = 0;
  18.   mlp = 0;
  19.   for (i = 0, mp = 0, ml = 0, mc = 0, mltot = 0; i <= l1 - lmin; i++) {
  20.     for (j = 0, lmm = 0, lminc = lmin; j <= l2 - lminc; j++) {
  21.       for (k1 = i, k2 = j, lm = 0; (k1 < l1) && (k2 < l2); k1++, k2++) {
  22.         if (st1.charAt(k1) == st2.charAt(k2))
  23.           lm++;
  24.         else
  25.           break;
  26.       }
  27.       if (lm > lmm) lmm = lm;
  28.       if (lminc < lmm) lminc = lmm;
  29.     }
  30.     if (lmm < lmin) continue;
  31.     mc++;
  32.     mltot += lmm;
  33.     if (mp + ml > i) {
  34.       if (i + lmm > mp + ml) {
  35.         if (mp > mpp) {
  36.           mc--;
  37.           mltot -= ml;
  38.           mp = mpp;
  39.           ml = mlp;
  40.         }
  41.       } else {
  42.         mc--;
  43.         mltot -= lmm;
  44.         continue;
  45.       }
  46.       if (lmm > ml) {
  47.         mltot -= ml;
  48.         if (i - mp < lmin)
  49.           mc--;
  50.         else
  51.           mltot += i - mp;
  52.         mp = i;
  53.         mpp = i;
  54.         ml = lmm;
  55.         mlp = lmm;
  56.       } else {
  57.         if (i + lmm - mp - ml < lmin) {
  58.           mc--;
  59.           mltot -= lmm;
  60.         } else {
  61.           mltot -= mp + ml - i;
  62.           mp += ml;
  63.           ml = i + lmm - mp;
  64.         }
  65.       }
  66.     } else {
  67.       mp = i;
  68.       ml = lmm;
  69.       mpp = i;
  70.       mlp = lmm;
  71.     }
  72.   }
  73.   return ((mltot * 100 / l1) * 100 + 140 - 8 * mc - l2 * 32 / l1);
  74. }
  75.  
  76. static String PreProcessString(String st){
  77.   while (st.length() != (st = st.replace(" ", " ")).length()); // Подавление лишних пробелов.    
  78.   st = st.toLowerCase();
  79.   st = st.replace("ё", "е"); // Подавление ё.  
  80.   return ( st );
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement