算法面试真题详解:翻转字符串中的单词

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

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

在线评测地址:领扣题库官网

样例1:
输入:  "the sky is blue"
        输出:  "blue is sky the"
        
        样例解释: 
        返回逐字反转的字符串.
样例2:
输入:  "hello world"
        输出:  "world hello"
        
        样例解释: 
        返回逐字反转的字符串.

题解:

public class Solution {
    /*
     * @param s: A string
     * @return: A string
     */
    public String reverseWords(String s) {
        // write your code here
        if(s.length() == 0 || s == null){
            return " ";
        }
        //按照空格将s切分
        String[] array = s.split(" ");
        StringBuilder sb = new StringBuilder();
            //从后往前遍历array,在sb中插入单词
        for(int i = array.length - 1; i >= 0; i--){
            if(!array[i].equals("")) {
                if (sb.length() > 0) {
                    sb.append(" ");
                }
                
                sb.append(array[i]);
            }
        }
        return sb.toString();
    }
}

更多题解参考:九章官网solution

上一篇:算法面试真题详解:最小调整代价


下一篇:大厂面试真题详解:迷你推特