# 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
2
s.split(" ")
用空格作为分隔符,返回一个 String
数组。
# 2.2 字符串反转
String s = "abcd";
StringBuilder sb = new StringBuilder(s).reverse();
System.out.println(sb); // output: dcba
1
2
3
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
2
3
4
5
6
7
8
9
10
11
12