输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点 符号和普通字母一样处理

题目:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点
符号和普通字母一样处理

解答:

 1 public class Solution {
 2     public static void main(String[] args) {
 3         String string = "I am a student.";
 4         reverseSentence(string);
 5     }
 6 
 7     private static void reverseSentence(String str) {
 8         if(str == null) {
 9             return;
10         }
11 
12         char[] arr = str.toCharArray();
13         reverse(arr, 0, arr.length-1);
14 
15         int start = 0;
16         int end = 0;
17         for(int i = 0; i < arr.length; i++) {
18             if(arr[i] == ' ') {
19                 reverse(arr, start, end);
20                 end++;
21                 start = end;
22             } else if(i == arr.length) {
23                 end++;
24                 reverse(arr, start, end);
25             } else {
26                 end++;
27             }
28         }
29 
30         for(char c: arr) {
31             System.out.print(c);
32         }
33     }
34 
35     private static void reverse(char[] arr, int start, int end) {
36         for(int i = start, j = end; i <= j; i++,j--) {
37             char temp = arr[i];
38             arr[i] = arr[j];
39             arr[j] = temp;
40         }
41     }
42 }

 

原文地址:https://www.cnblogs.com/wylwyl/p/10384599.html