CodeWars 열 두 번째 문제

Updated:

Stop gninnipS My sdroW!

public class SpinWords {

  public String spinWords(String sentence) {
    StringTokenizer sTokenizer = new StringTokenizer(sentence, " ");
    StringBuffer sentenceBuffer = new StringBuffer();
    
    while(true) {
      String word = sTokenizer.nextToken();
      
      if(word.length() >= 5) {
        sentenceBuffer.append(new StringBuffer(word).reverse());
      } else {
        sentenceBuffer.append(word);
      }
      
      if(sTokenizer.hasMoreTokens()) {
        sentenceBuffer.append(" ");
      } else {
        break;
      }
    }
        
    return sentenceBuffer.toString();
  }
}

*문제는 어렵지 않았다. 그런데 아래와 같이 간단하게 코딩 할 수 있었다.

String[] words = sentence.split(" ");

for (int i=0; i<words.length; i++) {
    if (words[i].length() >= 5) {
        words[i] = new StringBuffer(words[i]).reverse().toString();
    }
}

return String.join(" ",words);

*StringTokenizer을 썼는데 String의 split을 사용하면 더 편했다.

*StringBuiler의 reverse를 통해서 쉽게 문자열을 역순 할 수 있었다.

*String, StringBuiler, StringBuffer의 차이점은 따로 java 개념 포스트로 올렸다.

*String의 join을 처음 알게 되었다. 이 또한 따로 java 개념 포스트(String 편)으로 올렸다.