public class StringUtility {

    public static String reverse(String sentence) {
        String[] words = sentence.replaceAll(" +", " ").toLowerCase().split(" ");
        String s = "";

        for (int i = words.length - 1; i >= 0 ; i--) {
            s += words[i] + " ";
        }
        return s;
    }

    public static char maxOccuringCharacter(String sentence) throws IllegalArgumentException {
        char[] characters = sentence.replaceAll("[^a-zA-Z0-9]","").toLowerCase().toCharArray();
        int[] cells = new int[256];
        char result = ' ';
        int max = -1;

        try {
            for (int i = 0; i < characters.length - 1; i++)
                for (int j = 0; j < characters.length - 1; j++)
                    if (characters[i] == characters[j])
                        cells[characters[i]]++;

            for (int i = 0; i < characters.length - 1; i++) {
                if (cells[characters[i]] > max) {
                    max = cells[characters[i]];
                    result = characters[i];
                }
            }
        } catch (Exception e) {

        }

        return result;
    }

    public static boolean isPalindrome(String input) {
        return input.equals((new StringBuilder(input)).reverse().toString());
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println(StringUtility.reverse("This is a SENTENCE"));
        System.out.println(StringUtility.reverse("This    SENTENCE"));

        System.out.println(StringUtility.maxOccuringCharacter("iiiiiii"));
        System.out.println(StringUtility.maxOccuringCharacter("IiijjjJJ"));

        System.out.println(StringUtility.isPalindrome("madam"));
        System.out.println(StringUtility.isPalindrome("racecar"));
        System.out.println(StringUtility.isPalindrome("egdhsghfsdbfjkdnbsgal"));
        System.out.println(StringUtility.isPalindrome("lol"));
    }
}