zoukankan      html  css  js  c++  java
  • 翻转字符串里的单词

    给定一个字符串,逐个翻转字符串中的每个单词。

    示例:  

    输入: "the sky is blue",
    输出: "blue is sky the".
    

    说明:

    • 无空格字符构成一个单词。
    • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
    • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

    进阶: 请选用C语言的用户尝试使用 O(1) 空间复杂度的原地解法。

    第一种方法:时间复杂度高,但空间复杂度低

    public class Solution {
        public String reverseWords(String s) {
           
            if(s.length()==0)return "";
            String[] string=s.split("\s+");
            StringBuffer sb=new StringBuffer();
            for(int i=string.length-1;i>=0;i--){          
                    sb.append(string[i]).append(" ");            
            }
            
            return sb.toString().trim();
        }
    }

    第二种方法:时间复杂度低,但空间复杂度为O(n)

    public class Solution {
        public String reverseWords(String s) {
            if(s.length()==0)return s;
            char[] ch=s.toCharArray();
            char[] res=new char[ch.length];
            int len=helper(ch,ch.length-1,res,0,0);
            return new String(res,0,len);
        }
        private int helper(char[] ch,int r,char[] res,int l,int len){
            while(r>=0&&ch[r]==' '){
                r--;
            }
            if(r<0)return Math.max(0,len-1);
            int rigth=r;
            while(r>=0&&ch[r]!=' '){
                r--;
            }
            len+=rigth-r+1;
            for(int left=r+1;left<=rigth;left++,l++){
                res[l]=ch[left];
            }
            if(l<res.length){
                res[l++]=' ';
            }
            return helper(ch,r,res,l,len);
        }
    }
  • 相关阅读:
    rabbitMq交换机direct、topics
    rabbitMq及安装、fanout交换机-分发(发布/订阅)
    rabbitmq
    .sh文件启动 jenkins
    雪花算法、二进制运算
    收银台数据库存储AES加解密
    数据库事物
    excel技巧
    日期计算、正则、sequence、索引、表连接、mybatis
    oracle常用函数介绍
  • 原文地址:https://www.cnblogs.com/yihangZhou/p/10158449.html
Copyright © 2011-2022 走看看