zoukankan      html  css  js  c++  java
  • 151. Reverse Words in a String

    没啥难的,难点在于各种带空格的edge cases.

    然后 按空格分是

    str.split("s+");

    public String reverseWords(String s) 
        {
            if(s == null) return null;
            s = s.trim();
            if(s.length() == 0) return "";
    
            int length = s.split("\s+").length;
    
            StringBuilder[] sbArray = new StringBuilder[length];
    
            StringBuilder res = new StringBuilder();
            int n = 0;
            for(String tempStr : s.split("\s+"))
            {
                StringBuilder tempSB = new StringBuilder(tempStr);
                sbArray[n++] = tempSB;
                
            }   
    
            for(int m = length-1; m >= 0; m--)
            {
                res.append(sbArray[m]).append(" ");
            }
    
            return res.toString().trim();
    
    
        }
    



    二刷。

    感觉这个题是E难度的。。可能本意是考C,C++这种指针运算,in-place的话还有那么点意思。

    对于Java来说比较直接,用split去掉空格顺便变成String[],然后倒着遍历就行了。。

    需要注意的就是split()里面的regular expression,我到现在都记不住,每次都上网查。。

    网络课和编译器课都学过,学过就忘,忘了就查,羞耻地活在这个世界上……

    image

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



    三刷。

    用split来做。。
    分完之后倒着添加,注意仔细。。

    public class Solution {
        public String reverseWords(String s) {
            if (s.length() == 0) return s;
            s = s.trim();
            if (s.length() == 0) return "";
            String[] str = s.split("\s+");
            StringBuilder sb = new StringBuilder();
            for (int i = str.length - 1; i >= 0; i--) {
                sb.append(str[i]).append(" ");;
            }
            return sb.toString().trim();
        }
    }
    
  • 相关阅读:
    python异常触发及自定义异常类
    python for i in range(x)应用的问题
    季羡林 暮年沉思录
    再谈python的list类型参数及复制
    Python 列表推导式
    JavaScript:垃圾数据是如何自动回收的?
    JavaScript:this的用法
    JavaScript:浅谈闭包及其回收原则
    ES6:async / await ---使用同步方式写异步代码
    五大主流浏览器与四大浏览器内核
  • 原文地址:https://www.cnblogs.com/reboot329/p/5887417.html
Copyright © 2011-2022 走看看