# 557-反转字符串中的单词 III

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/reverse-words-in-a-string-iii

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

# 一、题目描述

给定一个字符串  s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入:s = "Let's take LeetCode contest"

输出:"s'teL ekat edoCteeL tsetnoc"

示例 2:

输入: s = "God Ding"

输出:"doG gniD"

提示:

  • 1 <= s.length <= 5 * 104
  • s  包含可打印的 ASCII 字符。
  • s  不包含任何开头或结尾空格。
  • s  里 至少 有一个词。
  • s  中的所有单词都用一个空格隔开。

# 二、知识点

# 2.1 通过 regex 分割字符串

String s = "Let's take LeetCode contest";
String []res = s.split(" ");
1
2

s.split(" ") 用空格作为分隔符,返回一个 String 数组。

# 2.2 字符串反转

String s = "abcd";
StringBuilder sb = new StringBuilder(s).reverse();
System.out.println(sb); // output: dcba
1
2
3

# 三、解法

class Solution {
    public String reverseWords(String s) {
        StringBuilder sb = new StringBuilder(s.length());
        for (String retval: s.split(" ")){
            sb.append(new StringBuilder(retval).reverse());
            sb.append(" ");
        }
        // 删除结尾的空格
        sb.delete(sb.length() - 1, sb.length());
        return sb.toString();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12