151. Reverse Words in a String
Last updated
Last updated
time: O(n)
space: O(n)
class Solution {
public String reverseWords(String s) {
String str[] = s.trim().split(" ");
StringBuilder sb = new StringBuilder();
for (int i = str.length-1; i >= 0; i--) {
String s1 = str[i];
if (s1.trim().length() != 0) {
sb.append(s1 + " ");
}
}
sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
// public String reverseWords(String s) {
// s = s.trim();
// char arr[] = s.toCharArray();
// reverse(arr, 0, arr.length-1);
// int begin = 0;
// for (int i = 0; i < arr.length; i++) {
// if (arr[i] == ' ') {
// reverse(arr, begin, i-1);
// begin = i + 1;
// }
// }
// reverse(arr, begin, arr.length-1);
// return String.valueOf(cleanSpace(arr));
// }
// private void reverse(char[] arr, int i, int j) {
// while (i < j) {
// char temp = arr[i];
// arr[i] = arr[j];
// arr[j] = temp;
// i++;
// j--;
// }
// }
// private char[] cleanSpace(char arr[]) {
// List<Character> res = new ArrayList<>();
// res.add(arr[0]);
// for (int i = 1; i < arr.length; i++) {
// if (!(arr[i] == ' ' && arr[i-1] == ' ')) {
// res.add(arr[i]);
// }
// }
// char resAry[] = new char[res.size()];
// int r = 0;
// for (char c : res) {
// resAry[r++] = c;
// }
// return resAry;
// }
}