53. 翻转字符串

2018-03-20  本文已影响28人  6默默Welsh

描述

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

说明

单词的构成:无空格字母构成一个单词
输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个

样例

Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".

注意

字符串里面是可能包含空格的

代码

public class Solution {
    /*
     * @param s: A string
     * @return: A string
     */
    public String reverseWords(String s) {
        if (s.length() == 0 || s == null) {
            return " ";
        }
        
        // 以字符串中原本就有的空格来分割,并不是加入新的空格来分割一串字母
        String[] array = s.split(" ");
        StringBuilder sb = new StringBuilder();
        
        // 从字符串尾部开始遍历
        for (int i = array.length - 1; i >= 0; i--) {
            // array[i] 是单词
            if (!array[i].equals(" ")) {
                // 反转字符串首尾不能包含空格,
                // 当 sb 长度大于 0 时,给每个单词之间添加空格
                if (sb.length() > 0) {
                    sb.append(" ");
                }
                
                sb.append(array[i]);
            }
        }
        
        return sb.toString();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读