https://leetcode.com/problems/reverse-words-in-a-string-iii/description/

class Solution {
public String reverseWords(String s) {
String[] arr = s.split(" ");
StringBuilder answer = new StringBuilder();
for(int i = 0; i < arr.length; i++) {
StringBuilder sb = new StringBuilder(arr[i]);
if(i == arr.length -1) {
answer.append(sb.reverse());
break;
}
answer.append(sb.reverse()).append(" ");
// .trim() 사용 시 문자열 양끝의 공백 제거 가능
}
return answer.toString();
}
}


=> 단어를 뒤집는다는 것에서 two pointers를 생각
class Solution {
public String reverseWords(String s) {
char[] arr = s.toCharArray();
int lt = 0;
for(int rt = 0; rt <= arr.length; rt++) {
if(rt == arr.length || arr[rt] == ' ') {
reverse(arr, lt, rt-1);
lt = rt + 1;
}
}
return new String(arr);
}
private void reverse(char[] arr, int lt, int rt) {
while(lt < rt) {
char tmp = arr[lt];
arr[lt] = arr[rt];
arr[rt] = tmp;
rt--;
lt++;
}
}
}
