题目:
例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。
示例:
输入:"nowcoder. a am I"
返回值:"I am a nowcoder."
思路:
思路是很清晰的,先碰到的单词放到末尾,以空格为界限
重要的是怎么实现,借助栈,先碰到的单词先入栈,再依次出栈
具体实现见代码
但其实不用栈也可以,就是使用栈的思想,用倒序遍历去实现就可以了
主要是一些日常不怎么用的方法 比如 spilt(),trim()等,要掌握一下
复杂度:
时间复杂度:遍历O(n)
空间复杂度:栈O(n)
代码:
public String ReverseSentence(String str) {
//删除首尾的空格,然后按照“ ”去 分成各个String
String strs[] = str.trim().split(" ");
StringBuilder words = new StringBuilder();
//然后再倒叙遍历strs,用words拼接
for(int i = strs.length-1;i>=0;--i){
//会有多个“ ”的情况,跳过本次循环
if(strs[i].equals("")) continue;
words.append(strs[i]+" ");
}
return words.toString().trim();
}