Description:
You are going to be given a word. Your job is to return the middle character of the word. If the word’s length is odd, return the middle character. If the word’s length is even, return the middle 2 characters.
Examples:
Kata.getMiddle("test") should return "es"
Kata.getMiddle("testing") should return "t"
Kata.getMiddle("middle") should return "dd"
Kata.getMiddle("A") should return "A"
Input
A word (string) of length 0 < str < 1000
Output
The middle character(s) of the word represented as a string.
My Solution
public static String getMiddle(String word) {
String str = null;
StringBuffer sb = new StringBuffer();
if (word.length() %2 == 0 && word.length() != 1) {
sb.append(word.charAt( word.length() /2 -1));
sb.append(word.charAt(word.length()/2));
str = sb.toString();
return str;
}else if(word.length() == 1) {
return word;
}else{
sb.append(word.charAt(word.length()/2));
str = sb.toString();
return str;
}
}
Better Solution
public static String getMiddle(String word) {
String s = "";
int length = word.length();
int half = length/2;
if (length % 2 == 0) {
s = word.substring(half - 1, half + 1);
} else {
s = word.substring(half, half + 1);
}
return s;
}