zoukankan      html  css  js  c++  java
  • [LeetCode] 151. 翻转字符串里的单词

    自己做的错了,没考虑到中间可能有多个空格:

    public static String reverseWords(String s){
            String[] s1 = s.trim().split(" ");
            String s2=new String();
            s2=s1[s1.length-1]+" ";
            for(int i=s1.length-2;i>0;i--){
                s2=s2+s1[i]+" ";
            }
            s2=s2+s1[0];
    //        s2.trim();
            return s2;
        }

    这里如果在用split的时候用的是正则表达式就不会有问题,再利用语言对字符串提供的工具:

    class Solution {
        public String reverseWords(String s) {
            // 除去开头和末尾的空白字符
            s = s.trim();
            // 正则匹配连续的空白字符作为分隔符分割
            List<String> wordList = Arrays.asList(s.split("\s+"));
            Collections.reverse(wordList);
            return String.join(" ", wordList);
        }
    }

    不得不说,自带的方法真的很慢哈,虽然写起来很简单。

    题解中给的方法一:用一个双指针,相当于遍历整个数组

    class Solution {
        public String reverseWords(String s) {
            s = s.trim();
            int j=s.length()-1,i=j;
            StringBuilder res=new StringBuilder();
            while(i>=0){
                while(i>=0&&s.charAt(i)!=' ')i--;
                res.append(s.substring(i+1,j+1)+" ");
                while(i>=0&&s.charAt(i)==' ')i--;
                j=i;
            }
            return res.toString().trim();
        }
    }

     方法二:

    class Solution {
        public String reverseWords(String s) {
            String arr[]=s.split(" ");
            StringBuilder sb = new StringBuilder("");
            for(int i=arr.length-1;i>=0;i--){
                if("".equals(arr[i])){
                    continue;
                }
                sb.append(arr[i]).append(" ");
            }
            String res=sb.toString();
            if("".equals(res)){
                return res;
            }
            return res.substring(0,res.length()-1);
        }
    }

  • 相关阅读:
    <span>和<div>标签的隐藏和显示切换
    重启svn
    Mac下配置apache
    iOS时间显示今天昨天
    关于UIPageViewController那些事
    关于plist文件的那些事
    Xcode调试LLDB
    Reveal安装
    静态初始化器
    Static简介
  • 原文地址:https://www.cnblogs.com/doyi111/p/12675505.html
Copyright © 2011-2022 走看看