剑指offer-44-反转单词顺序

翻转单词顺序列

http://www.nowcoder.com/questionTerminal/3194a4f4cf814f63919d0790578d51f3

思路

  • 栈+指针
    利用栈来反转句子,利用一个指针指向空格,for循环中的i算是尾指针,指向下一个空格。对每个单词和空格入栈。
    时间复杂度O(n)
  • split分割成字符串
    然后从后往前拼接

代码

栈+指针

public class Solution {
    public String ReverseSentence(String str){
        Stack stack = new Stack();
        int l = 0;
        for(int i = 0; i < str.length(); i++){
            if(str.charAt(i) == " "){
                System.out.println(l+" "+i);
                stack.push(str.substring(l, i));
                l = i;
                stack.push(" ");
                l++;
            }
            if(i == str.length() - 1){
                stack.push(str.substring(l));
            }
        }
        StringBuilder result = new StringBuilder();
        while (!stack.isEmpty()) {
            result.append(stack.pop());
        }
        return result.toString();
    }
}

split函数分割字符串

public class Solution {
    public String ReverseSentence(String str) {
        String[] s= str.split(" ");
        if(s.length<=1){return str;}
        String res="";
        for(int i=s.length-1; i>0;i--){
            res+=s[i]+" ";
        }
        res+=s[0];
        return res;
    }
}
剑指offer与数据结构 文章被收录于专栏

本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构

全部评论

相关推荐

曲霜晨:娱乐至上的年代
点赞 评论 收藏
分享
05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务