Senior
Verilən sətir üçün onun simvollarından ibarət ən böyük palindromun uzunluğunu müəyyən etmək lazımdır. Palindrom — bu, başlanğıc və sonundan oxunduqda eyni olan söz, məsələn "kek" və ya "kəklik". Nümunə: Daxil edilən: aaabbbcccddd Çıxış: 11 (palindrom dccbbaaabbccd)
sobes.tech Süni İntellekt
AI-dan cavab
Чтобы найти длину самого большого палиндрома, который можно составить из символов строки, нужно учитывать, что палиндром симметричен, и в центре может быть только один символ с нечетной частотой.
Алгоритм:
- Подсчитать количество каждого символа.
- Для каждого символа добавить в длину палиндрома максимально четное количество его вхождений (например, если символ встречается 5 раз, добавить 4).
- Если есть хотя бы один символ с нечетным количеством, добавить 1 (центральный символ).
Пример на Java:
public int longestPalindromeLength(String s) {
int[] counts = new int[128]; // для ASCII
for (char c : s.toCharArray()) {
counts[c]++;
}
int length = 0;
boolean oddFound = false;
for (int count : counts) {
length += (count / 2) * 2; // добавляем четное количество
if (count % 2 == 1) {
oddFound = true;
}
}
if (oddFound) {
length += 1; // центральный символ
}
return length;
}