给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let‘s take LeetCode contest"
输出: "s‘teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
思路:
简单题
1.强行遍历逆置
2.正则,分割字符串,逆置
1 class Solution557 {
2
3 public String reverseWords(String s) {
4 char[] arr = s.toCharArray();
5 int end = 0;
6 int start = 0;
7 for (end = 0; end < arr.length; end++) {
8 if (end == arr.length - 1 || arr[end + 1] == ‘ ‘) {
9 reserve(arr, start, end);
10 start = end + 2;
11 }
12 }
13 return new String(arr);
14 }
15
16 private void reserve(char[] arr, int start, int end) {
17 int len = end - start + 1;
18 for (int i = 0; i < (len >> 1); i++) {
19 char temp = arr[start + i];
20 arr[start + i] = arr[end - i];
21 arr[end - i] = temp;
22 }
23 }
24
25
26 public String reverseWords_2(String s) {
27 StringBuilder res = new StringBuilder();
28 String[] subs = s.split(" ");
29 for (String sub : subs) {
30 res.append(new StringBuilder(sub).reverse()).append(" ");
31 }
32 res.deleteCharAt(res.length() - 1);
33 return res.toString();
34
35 }
36 }
原文:https://www.cnblogs.com/rainbow-/p/10397324.html