题解 | #翻转单词序列#
翻转单词序列
http://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3
双栈解法
思路:
依次遍历字符串str,如果元素不等于空格,则直接入栈1;如果元素等于空格,则将栈1的所有元素存到栈2,同时将空格也存到栈2中。遍历完如果字符串不是以空格结尾的话,栈1中还存有单词,所以要再把栈1的元素都存到栈2中。最后将栈2元素出栈并拼接成最终返回的字符串。
import java.util.Stack;
public class Solution {
public String ReverseSentence(String str) {
Stack<Character> stk1 = new Stack<>();
Stack<Character> stk2 = new Stack<>();
for(int i=0;i<str.length();++i){
char c = str.charAt(i);
if(c != ' '){
stk1.push(c);
} else {
while(!stk1.isEmpty()){
stk2.push(stk1.pop());
}
stk2.push(c);
}
}
while(!stk1.isEmpty()){
stk2.push(stk1.pop());
}
String res = "";
while(!stk2.isEmpty()){
res += stk2.pop();
}
return res;
}
}
阿勇算法解集 文章被收录于专栏
对一些基础的,经典的题目的算法题解,每道题的题解尽量做到一题多解,举一反三。其中每一个题解中,若是参考了其他牛人的想法,我会备注出来。