package com.coding.me;
/**
* 回文
*
*/
public class Palindrome {
private static String oddCase(char[] chars, int index) {
int maxLength = 1;
int i = 1;
while((index - i) >= 0 && (index + i) < chars.length - 1){
if(chars[index - i] != chars[index + i]){
break;
}
maxLength += 2;
i++;
}
return String.valueOf(chars, index + 1 - i, maxLength);
}
private static String evenCase(char[] chars, int index) {
int maxLength = 0;
int i = 0;
while((index - i) >= 0 && (index + 1 + i) <= chars.length - 1){
if(chars[index - i] != chars[index + 1 + i]){
break;
}
i++;
maxLength += 2;
}
return String.valueOf(chars, index + 1 - i, maxLength);
}
public static String findLongestPalindrome(String s){
char[] chars = s.toCharArray();
String longestPalindrome = "";
String tmp = "";
for(int i=0;i<chars.length;i++){
tmp = oddCase(chars, i);
if(longestPalindrome.length() < tmp.length()){
longestPalindrome = tmp;
}
tmp = evenCase(chars, i);
if(longestPalindrome.length() < tmp.length()){
longestPalindrome = tmp;
}
}
return longestPalindrome;
}
public static void main(String[] args) {
System.out.println(findLongestPalindrome("abcbacda"));
int[] nums = {3, 123, 78, 90};
System.out.println(largestNumber(nums));
}
public static String largestNumber(int[] nums) {
String[] array = new String[nums.length];
for (int i = 0; i < nums.length; i++) {
array[i] = String.valueOf(nums[i]);
}
String temp;
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++) {
if ((array[i] + array[j]).compareTo(array[j] + array[i]) < 0) {
temp = array[i];
array[i] = array[j];
array[j] =temp;
}
}
}
if (array[0].equals("0")) {
return "0";
} else {
return String.join("", array);
}
}
}