Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private int compResult(String st1, String st2) {
- String st0;
- int i, j, k1, k2, l0, l1, l2, lmin, lminc, lm, lmm, mltot, ml, mp, mc, mpp, mlp;
- st1 = PreProcessString(st1);
- st2 = PreProcessString(st2);
- lmin = 3;
- l1 = st1.length();
- l2 = st2.length();
- if (l1 > l2) {
- st0 = st1;
- l0 = l1;
- st1 = st2;
- l1 = l2;
- st2 = st0;
- l2 = l0;
- }
- mpp = 0;
- mlp = 0;
- for (i = 0, mp = 0, ml = 0, mc = 0, mltot = 0; i <= l1 - lmin; i++) {
- for (j = 0, lmm = 0, lminc = lmin; j <= l2 - lminc; j++) {
- for (k1 = i, k2 = j, lm = 0; (k1 < l1) && (k2 < l2); k1++, k2++) {
- if (st1.charAt(k1) == st2.charAt(k2))
- lm++;
- else
- break;
- }
- if (lm > lmm) lmm = lm;
- if (lminc < lmm) lminc = lmm;
- }
- if (lmm < lmin) continue;
- mc++;
- mltot += lmm;
- if (mp + ml > i) {
- if (i + lmm > mp + ml) {
- if (mp > mpp) {
- mc--;
- mltot -= ml;
- mp = mpp;
- ml = mlp;
- }
- } else {
- mc--;
- mltot -= lmm;
- continue;
- }
- if (lmm > ml) {
- mltot -= ml;
- if (i - mp < lmin)
- mc--;
- else
- mltot += i - mp;
- mp = i;
- mpp = i;
- ml = lmm;
- mlp = lmm;
- } else {
- if (i + lmm - mp - ml < lmin) {
- mc--;
- mltot -= lmm;
- } else {
- mltot -= mp + ml - i;
- mp += ml;
- ml = i + lmm - mp;
- }
- }
- } else {
- mp = i;
- ml = lmm;
- mpp = i;
- mlp = lmm;
- }
- }
- return ((mltot * 100 / l1) * 100 + 140 - 8 * mc - l2 * 32 / l1);
- }
- static String PreProcessString(String st){
- while (st.length() != (st = st.replace(" ", " ")).length()); // Подавление лишних пробелов.
- st = st.toLowerCase();
- st = st.replace("ё", "е"); // Подавление ё.
- return ( st );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement