剑指offer-翻转单词顺序列

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
 
首先整个翻转,然后针对每个单词 逐个翻转
 1 public class Solution {//my 
 2     public String ReverseSentence(String str) {
 3         char[] s = str.toCharArray();
 4         reStr(s,0,str.length()-1);
 5         int i=0;
 6         while(i<str.length()){
 7             int j =i;
 8             for(;j<str.length();j++){
 9                 if(s[j]==' '){
10                     reStr(s,i,j-1);
11                     break;
12                 }
13                 if(j==(str.length()-1)){
14                     reStr(s,i,j);
15                     break;
16                 }
17             }
18             i=j+1;
19         }
20         return String.valueOf(s);
21     }
22     public void reStr(char[] s ,int i,int j){
23         while(i<j){
24             char temp = s[i];
25             s[i]=s[j];
26             s[j]=temp;
27             i++;
28             j--;
29         }
30     }
31 }
原文地址:https://www.cnblogs.com/zhacai/p/10710373.html