557. 翻转字符串中的单词 III

题目

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

示例1:

1
2
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"

示例2:

1
2
输入: s = "God Ding"
输出:"doG gniD"

提示:

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

解法

解法一:

先翻转单词,再翻转整个字符串

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
private String reverseString(String s) {
StringBuilder sb = new StringBuilder(s.length());
for (int i = s.length() - 1;i >= 0;i--) {
sb.append(s.charAt(i));
}
return sb.toString();
}

public String reverseWords(String s) {
StringBuilder sb = new StringBuilder();
String[] ss = s.split(" ");
for (String sss : ss) {
sb.append(reverseString(sss)).append(" ");
}
return sb.toString().trim();
}
}

解法二:

库函数

先按空格分割,翻转每个字符串,拼接

Java

1
2
3
4
5
6
7
public String reverseWords(String s) {
String words[] = s.split(" ");
StringBuilder res=new StringBuilder();
for (String word: words)
res.append(new StringBuffer(word).reverse().toString() + " ");
return res.toString().trim();
}
0%