151-reverse-words-in-a-string
Question
https://leetcode.com/problems/reverse-words-in-a-string/description/
Given an input string, reverse the string word by word.
Example:
Given s = "the sky is blue",
return "blue is sky the".
Thought Process
- Split by Space
- We can choose to trim the space or not, then we split by space
- Then start from the end of the string array, we start building word by word
- Time complexity O(n)
- Space complexity O(n)
Solution
public class Solution {
public String reverseWords(String s) {
String[] words = s.trim().split("\\s+");
if (words.length == 0) return "";
StringBuilder sb = new StringBuilder();
for (int i = words.length - 1; i > 0; i--){
sb.append(words[i]).append(" ");
}
sb.append(words[0]);
return sb.toString();
}
}
public class Solution {
public String reverseWords(String s) {
String[] words = s.split(" ");
StringBuilder sb = new StringBuilder();
for (int i = words.length - 1; i >= 0; i--){
if (words[i].length() > 0) sb.append(words[i]).append(" ");
}
if (sb.length() > 0) sb.setLength(sb.length() - 1);
return sb.toString();
}
}