Senior
Барои сатр даркарда лозим аст, дарозии палиндроми калонтаринро, ки аз ҳарфҳои он ташкил кардан мумкин аст, муайян кардан. Палиндром — ин калимаест, ки аз оғоз ва охир якхела мехонад, масалан "шалаш" ё "потоп". Масалан: Ворид: aaabbbcccddd Баромад: 11 (палиндром dccbbaaabbccd)
sobes.tech AI
Ҷавоб аз AI
Чтобы найти длину самого большого палиндрома, который можно составить из символов строки, нужно учитывать, что палиндром симметричен, и в центре может быть только один символ с нечетной частотой.
Алгоритм:
- Подсчитать количество каждого символа.
- Для каждого символа добавить в длину палиндрома максимально четное количество его вхождений (например, если символ встречается 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;
}