例如,“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(); }