zoukankan      html  css  js  c++  java
  • 剑指 Offer 58

    //双指针
    class Solution {
        public String reverseWords(String s) {
            //处理字符串 首尾空格
            String str = s.trim();
            //双指针
            int right = str.length() - 1;
            //left 指向 最右, 从右向左扫描
            int left = right;
            //结果集
            StringBuilder res = new StringBuilder();
    
            while(left >= 0){
                //找第一个空格
                while(left >= 0 && str.charAt(left) != ' '){
                    left--;
                }
                //找到后,说明现在 双指针的区间内 为一个单词 加入结果集,加一个空格分隔
                res.append(s.substring(left + 1,right + 1) + ' ');
                //跳过单词之间的空格
                while(left >= 0 && s.charAt(left) == ' '){
                    left--;
                }
                //将当前的left 指针 赋值给 right,找下一个单词
                right = left;
            }
            return res.toString().trim();
        }
    }
    class Solution {
        public String reverseWords(String s) {
            //去除首尾空格,并用空格拆分单词
             String[] str = s.trim().split(" ");
             //返回集
             StringBuilder res = new StringBuilder();
    
             for(int i = str.length - 1; i >= 0;i--){
                if(str[i].equals(" ") || str[i].equals("")){
                    continue;
                }
                res.append(str[i]);
                res.append(" ");
             }
             return res.toString().trim();
        }
    }
  • 相关阅读:
    Linux系统安装
    设计模式的原则
    vue基础
    软考常考题目及解题技巧
    软件设计师
    Wireshark 使用教程
    JVM 调优
    Shell脚本编写
    Linux相关知识
    HTTP缓存机制及原理
  • 原文地址:https://www.cnblogs.com/peanut-zh/p/14151573.html
Copyright © 2011-2022 走看看