Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Given s = "
the sky is blue",return "
blue is sky the".
解题思路:
先用string.split()把string分解成一个个的字符, 把字符存放在一个list里面. 然后从后往前取字符(要加上空格)添加到一个新的string里.
要注意可能以前的string里面有很多空格 所以在list里面取字符时候要判定如果是空格就舍弃.
时间上split操作是O(N),再一次扫描获得结果,也是O(N)。空间上使用了一个String[] 和StringBuffer,也是O(N)
public class Solution {
public String reverseWords(String s) {
if (s == null || s.length() == 0){
return s;
}
s.trim();
String [] str = s.split(" ");
StringBuilder tem = new StringBuilder();
for (int i = str.length - 1; i >= 0; i--){
if (str[i].length() == 0){
continue;
}
tem.append(str[i] + " ");
}
return tem.toString().trim();//因为每次都有加空格 所以tem最结尾有一个空格
} // 需要trim来去掉空格
}
没有评论:
发表评论