151. Reverse Words in a String
题目的原意是写一个函数对给定的String进行逐个单词的反转。
e.g. given s = "the sky is blue", return "blue is sky the"
要考虑的corner case
1. 是什么构建一个单词?一些非空格的字符串组成一个单词。
2. tab 和 newline 字符是否算作空格字符? 假设不包含任何tab或者newline字符
3. string可以包含首尾空格(leading or trailing spaces)?可以,但是反转的string不包含首尾空格。
4. 如何对待在两个单词之间的多个空格? 可以减少到一个空格。
解题思路:比较容易想到的是先将输入的 String s 拆分成若干个单词word,然后将单个word按照逆序重排。
public String reverseWords(String s){
StringBuilder reversed = new StringBuilder();
String[] words = s.split("\\s+");
for (int i = words.length - 1; i >= 0; i--) {
String word = String.format("%s ", words[i]);
reversed.append(word);
}
return reversed.toString().trim();
}