인덱스가 0부터 시작하기 때문이다
예를 들어 길이가 4라면 0,1,2,3 중 1,2번째 값을 가져와야 한다
length() 의 매개변수는 int 타입이라 문자열 길이의 반을 가져오면 된다..
예를 들어 길이가 5라면 2.5가 아닌 2번째 값을 가져오게 된다 (0,1,2,3,4,5 중 2)
class Solution {
public String solution(String s) {
if (s.length() % 2 ==0){ // 짝수일 경우
return Character.toString(s.charAt(s.length()/2-1)) + Character.toString(s.charAt(s.length()/2));
}else{
return Character.toString(s.charAt(s.length()/2));
// 길이의 반에 해당하는 문자 1개 리턴
// 이때 charAt은 char 값이므로 스트링으로 변환
}
}
}
테스트 1 〉 통과 (0.03ms, 78.8MB)
테스트 2 〉 통과 (1.69ms, 75.2MB)
테스트 3 〉 통과 (0.03ms, 76MB)
테스트 4 〉 통과 (0.03ms, 76.6MB)
테스트 5 〉 통과 (0.03ms, 74.4MB)
테스트 6 〉 통과 (1.75ms, 72.8MB)
테스트 7 〉 통과 (0.02ms, 71MB)
테스트 8 〉 통과 (1.27ms, 75.3MB)
테스트 9 〉 통과 (0.05ms, 81.9MB)
테스트 10 〉 통과 (0.04ms, 74.5MB)
테스트 11 〉 통과 (0.04ms, 75.2MB)
테스트 12 〉 통과 (0.05ms, 76.4MB)
테스트 13 〉 통과 (1.76ms, 77.8MB)
테스트 14 〉 통과 (1.16ms, 71.8MB)
테스트 15 〉 통과 (1.82ms, 77.2MB)
테스트 16 〉 통과 (1.44ms, 77.3MB)
String getMiddle(String word){
return word.substring((word.length()-1)/2, word.length()/2 + 1);
}
String getMiddle(String word){
return word != null ? word.substring((word.length()-1)/2,(word.length()+2)/2) : "";
}
String getMiddle(String word){
char[] ch = word.toCharArray();
int len = ch.length;
StringBuffer str = new StringBuffer();
if (len % 2 == 0) {
str.append(ch[(len / 2) - 1]);
str.append(ch[len / 2]);
}
else
str.append(ch[(len - 1) / 2]);
return String.valueOf(str);
}
String substring(int beginIndex, int endIndex)
이 함수는 String에서 시작하는 인덱스부터 마지막 인덱스까지의 값을 가져온다.
이때 시작 인덱스 = 마지막 인덱스라면 값을 하나만 리턴한다.
홀수의 경우 s.charAt(s.length()/2-1) = s.charAt(s.length()/2)이 되므로 substring을 사용하면 조건문을 사용할 필요가 없다.