보통사람

[7kyu] 입력받은 문자열 역순으로 출력 (Reverse words) 본문

Codewars/Java

[7kyu] 입력받은 문자열 역순으로 출력 (Reverse words)

pej4303 2019. 8. 3. 00:01
/**
 * <pre>
 * 입력받은 문자열 역순으로 출력 (Reverse words)
 * 
 * 문자열 매개 변수를 허용하는 함수를 완성하고 문자열의 각 단어를 반대로 만듭니다. 
 * 문자열의 모든 공백은 유지되어야합니다.
 * 
 * Complete the function that accepts a string parameter, and reverses each word in the string. 
 * All spaces in the string should be retained.
 * </pre>
 * 
 * @param 문자열
 * @return 역순 문자열
 * @author pej
 * @date 2019. 03. 24.
 * @desc 문자열의 각 단어를 반대로 만들고 문자열의 모든 공백은 유지됨
 * @example "This is an example!" ==> "sihT si na !elpmaxe" 
 *          "double  spaces"      ==> "elbuod  secaps"
 */
public static String reverseWords (final String original) {
    if (original.trim().isEmpty()) {
        return original;
    }
    
    String[] strArr = original.split("\\s");
    StringBuffer buffer; 
    StringBuffer result = new StringBuffer(); 
    
    for (int i=0; i<strArr.length; i++) {
        buffer = new StringBuffer(strArr[i]);
        
        if (i == strArr.length-1) {
            result.append(buffer.reverse().toString());
        } else {
            result.append(buffer.reverse().toString()).append(" ");
        }
    }
    
    return result.toString();
}