Привет всем. Срочно нужна помощь! Не мог бы кто-нибудь объяснить подробно и по порядку, что делает этот код? Знаю только саму суть, что он читает строку, находит самые длинные четные и нечетные палиндромы(слова, читающиеся слева направо и справа налево одинаково, например, aabaa или gag), а потом выводит их на экран, при этом там еще выводится его длина и позиция первого символа (считая слева). Заранее спасибо)
| Код | public static void palindrom(String s) { String str;//promenne boolean evenpal, oddpal; int k, m, poz, c; int n = 0; int k1, m1, poz1, c1; int n1 = 0; int[][][] pal = new int[s.length()][2][3]; for (int i = 2; i < (s.length() - 2); i++) { k = 0; c = 1; poz = 0; evenpal = false; oddpal = false; if (s.charAt(i) == s.charAt(i + 1)) { evenpal = true; } if (s.charAt(i) == s.charAt(i + 2)) { oddpal = true; } while (evenpal != false) { //hledame sude palindromy if (s.charAt(i - k) == s.charAt(i + c)) { m = poz + 2; k++; c++; poz = m; } else { evenpal = false; } } if (pal[0][1][0] < poz) { n = 0; pal[n][0][0] = i - k + 1; pal[n][1][0] = poz; } if (pal[0][1][0] == poz) { pal[n][0][0] = i - k + 1; pal[n][1][0] = poz; n++; } k1 = 0; c1 = 2; m1 = 1; poz1 = 0; while (oddpal != false) { //hledame liche palindromy if (s.charAt(i - k1) == s.charAt(i + c1)) { m1 = m1 + 2; k1++; c1++; poz1 = m1; } else { oddpal = false; } } if (pal[0][1][1] < poz1) { n1 = 0; pal[n1][0][1] = i - k1 + 1; pal[n1][1][1] = poz1; } if (pal[0][1][1] == poz1) { pal[n1][0][1] = i - k1 + 1; pal[n1][1][1] = poz1; n1++; } } n = 0; System.out.println("EVEN_PALINDROM\tMAX_LENTGTH = " + pal[0][1][0]);//vypisujeme sude palindromy while (pal[n][1][0] == pal[0][1][0]) { str = s.substring(pal[n][0][0], (pal[n][0][0] + pal[0][1][0])); System.out.print(pal[n][0][0] + " " + str);
System.out.print("\n"); n++; } n1 = 0; System.out.println("ODD_PALINDROM\tMAX_LENTGTH = " + pal[0][1][1]);//vypisujeme liche palindromy while (pal[n1][1][1] == pal[0][1][1]) { str = s.substring(pal[n1][0][1], (pal[n1][0][1] + pal[0][1][1])); System.out.println(pal[n1][0][1] + " " + str); n1++; }
|
|