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

    题目:

    Given an input string, reverse the string word by word.

    For example,
    Given s = "the sky is blue",
    return "blue is sky the".

    Update (2015-02-12):
    For C programmers: Try to solve it in-place in O(1) space.

    click to show clarification.

    Clarification: 
    • What constitutes a word?
      A sequence of non-space characters constitutes a word.
    • Could the input string contain leading or trailing spaces?
      Yes. However, your reversed string should not contain leading or trailing spaces.
    • How about multiple spaces between two words?
      Reduce them to a single space in the reversed string.

    链接: http://leetcode.com/problems/reverse-words-in-a-string/

    题解:

    反转单词。这道题乍一看很简单,实际上也很简单。假如可以使用Java库函数split和trim的话,代码不会很长。另外,如果不能使用库函数,我们还可以有其他的方法。比如像可以先用字符串生成字符数组,反转整个数组,再反转每个单词,  或者是从后向前一个一个insert到一个StringBuilder里,等等。

    Time Complexity - O(n), Space Complexity - O(n)

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

    二刷:

    还是用库函数做吧。假如考到的话要问清楚clarification questions。比如是否前后有trailing zeroes,或者是出现多个空格怎么办.

    Java:

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

    Reference:

  • 相关阅读:
    汉字乱码、加密后结果字符串不一致
    msgpack和TParams互相转换
    unigui监听会话开始和结束
    System.JSON.Builders.pas
    保证最终一致性的模式
    使用 Delta Sharing 协议进行数据共享
    dremio 16 升级问题
    graylog 4.0 运行
    supabase 开源firebase 可选工具
    cube.js 最新playground 说明
  • 原文地址:https://www.cnblogs.com/yrbbest/p/4489666.html
Copyright © 2011-2022 走看看