题目
传送门
解题思路
第一中做法用LinkedList模拟的双栈,效率有点低啊
第二种利用LinkedList的双向性直接头尾添加,一个栈输出。
代码(双栈)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { public String reverseLeftWords(String s, int n) { LinkedList<Character> stack1=new LinkedList<>(); LinkedList<Character> stack2=new LinkedList<>(); for (int i =0;i<s.length();i++){ if(n>0){ stack2.addLast(s.charAt(i)); n--; } else stack1.addLast(s.charAt(i)); } String str=""; while(!stack1.isEmpty()){ str+=stack1.removeFirst(); } while(!stack2.isEmpty()){ str+=stack2.removeFirst(); } return str; } }
|
代码(单栈)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public String reverseLeftWords(String s, int n) { if(s.length()==1) return s; LinkedList<Character> stack1=new LinkedList<>(); for (int i =n;i<s.length();i++){ stack1.addFirst(s.charAt(i)); } String str=""; for(int i=0;i<n;i++){ stack1.addFirst(s.charAt(i)); } while(!stack1.isEmpty()){ str+=stack1.removeLast(); } return str; } }
|