- 题目:
例如,“student. a am I”。顺序翻转成 “I am a student.”。
- 思路:
从前往后的顺序变成从后往前,很容易想到用栈,但是每个单词内部是没有翻转的,所以需要将字符串以空格为界划分成不同的字符,会用到str.split()函数。(也有用先翻转整个字符串,再翻转每个单词的做法,个人觉得不如栈) - 代码:
class Solution {
public String ReverseSentence(String str) {
//倒叙 用栈操作吧,用翻转的各种调用方法 何必呢
if(str==null||str.length()==0) return "";
if(str.split(" ").length==0) return str;//如果为" " 就原样返回
Stack result=new Stack();//储存最终结果
String[] string=str.split(" ");//以空格为界 划分成不同的单词
for(int i=0;i<string.length;i++){
result.push(string[i]);//各单词入栈
}
String a=result.pop().toString();
while(!result.isEmpty()){
a=a+' '+result.pop().toString();//各单词出栈 并加上空格
}
return a;
}
}