기술:
소문자 나 대문자로 구성된 문자열을 감안할 때, 그 편지로 구축 할 수있는 가장 긴 회문의 길이를 찾을 수 있습니다.
예를 들어이 대한이, 대소 문자를 구분 "Aa"
여기 회문으로 간주되지 않습니다.
참고 :
1010을 초과하지 않습니다 주어진 문자열의 길이를 가정합니다.
예:
입력 : "abccccdd" : 출력 7 설명 : 길이가 7 인 "dccaccd는"입니다 구축 할 수있는 한 가장 긴 회문을.
허용
108427
제출
222684
해결책:
클래스 솔루션 { 공공 INT longestPalindrome (문자열들) { 경우 (들 ==의 널 (null) || s.length () == 0 ) { 반환 0 ; } int로 [] = character_count 새로운 INT [123 ]; 위한 ( int로 I = 0; I)이 (s.length를 <; 내가 ++ ) { INT의 POS = ( INT ) s.charAt (I); // 에서 System.out.println (POS); 경우 (character_count [POS] == 0 ) { character_count [POS] = 1 ; } 다른 { character_count [POS] = character_count [POS] +1 ; } } INT의 합 = 0 ; INT max_odd = 0 ; 부울 check_flag = 거짓 ; 위한 ( int로 ; 나는 character_count.length <I는 I = 0 ++ ) { 경우 (character_count [I]를! = 0 ) { // 에서 System.out.println (character_count [I]); 경우 (character_count [I] % 2 == 0 ) { 합계 = 합계 + character_count [I]; character_count [I] = 0; check_flag = 진정한 ; } 다른 { 경우 (character_count [I]> max_odd) { max_odd = character_count [I]; } 합 = 합 character_count + [I] -1 ; } } } 경우 (max_odd> = 1 ) { 합계 = 합 +1 ; } 경우 (! check_flag) { 합계 = max_odd; } 반환합; } }