151. Reverse Words in a String

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;
//   }
}

Last updated

Was this helpful?