Упражнения по Java-строке: поиск самой длинной палиндромной подстроки в строке
Строка Java: упражнение 32 с решением
Напишите Java-программу для поиска самой длинной палиндромной подстроки в строке.
Иллюстрированная презентация:
Пример решения:
Java-код:
import java.util.*;
public class Main {
static void printSubStr(String str1, int l, int h) {
System.out.println(str1.substring(l, h + 1));
}
static int longPalSubstr(String str1) {
int n = str1.length();
boolean table[][] = new boolean[n][n];
int mLength = 1;
for (int i = 0; i < n; ++i)
table[i][i] = true;
int strt = 0;
for (int i = 0; i < n - 1; ++i) {
if (str1.charAt(i) == str1.charAt(i + 1)) {
table[i][i + 1] = true;
strt = i;
mLength = 2;
}
}
for (int k = 3; k <= n; ++k) {
for (int i = 0; i < n - k + 1; ++i) {
int j = i + k - 1;
if (table[i + 1][j - 1] && str1.charAt(i) == str1.charAt(j)) {
table[i][j] = true;
if (k > mLength) {
strt = i;
mLength = k;
}
}
}
}
System.out.print("The longest palindrome substring in the given string is; ");
printSubStr(str1, strt, strt + mLength - 1);
return mLength;
}
public static void main(String[] args) {
String str1 ="thequickbrownfoxxofnworbquickthe";
System.out.println("The given string is: " + str1);
System.out.println("The length of the palindromic substring is: " + longPalSubstr(str1));
}
}
Пример вывода:
Данная строка: thequickbrownfoxxofnworbquickthe Самая длинная палиндромная подстрока в организме en строка is; brownfoxxofnworb Длина палиндромной подстроки: 16
Блок - схема:
Редактор кода Java:
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущий: Напишите Java-программу для обрезки любого начального или конечного пробела из заданной строки.
Далее: Напишите программу на Java, чтобы найти все чередования данных строк.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code