Самый длинный алгоритм длины палиндрома обнаружил неверную длину для длинных строкJAVA

Программисты JAVA общаются здесь
Anonymous
Самый длинный алгоритм длины палиндрома обнаружил неверную длину для длинных строк

Сообщение Anonymous »

Я работал над проблемой в течение некоторого времени, в которой я вставил здесь «с учетом строки, которая состоит из строчных или прописных букв, вернуть длину самого длинного палиндрома, которая может быть построена с этими буквами. Например, буквы чувствительны к случаям, когда« AA »не считается палиндромом». Сначала тенденция иметь наименьшую ровную частоту символов, а затем поднимается в значительном состоянии, где в середине у вас самая большая нечетная частота символов, а затем считать его длину ». Это изменилось, однако, как я понял, мне нужно только вернуть длину, поэтому я подумал, что я считаю только даже вхождения и добавить ее к наибольшей нечетной частоте, которая должна вернуть самую длинную длину палиндрома. public static int longestPalindrome(String s) {
//variables
int length = 0;
int greatestOddFreaquency = 0;
TreeMap tm = new TreeMap();

//lenght 1
if (s.length() == 1) {
return 1;
}

for (int i = 0; i < s.length(); i++) {
int total = 0; //to count how many times a charcter occurs

for (int j = 0; j < s.length(); j++) {
if (s.charAt(i) == s.charAt(j)) {
total++;
}
}

if (total % 2 != 0 && total >= greatestOddFreaquency) {
greatestOddFreaquency = total;
} else if (total % 2 == 0) {
tm.put(s.charAt(i), total);
}
}

for (Map.Entry entry : tm.entrySet()) {
length += entry.getValue();
//System.out.println("Key " + entry.getKey() + " val " +entry.getValue());

}

return length+=greatestOddFreaquency;
}
< /code>
Тем не менее, при запуске этого на чрезвычайно длинной строке мой код не удается. Любая помощь будет высоко оценена :)

Подробнее здесь: https://stackoverflow.com/questions/794 ... ng-strings

Вернуться в «JAVA»