1.简述:

描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

数据范围:

进阶:空间复杂度  ,时间复杂度  ,保证没有只包含空格的字符串

示例1

输入:

"nowcoder. a am I"

返回值:

"I am a nowcoder."

复制

示例2

输入:

""

返回值:

""

2.代码实现:

import java.util.*;
public class Solution {
//字符串反转函数
private void reverse(char [] c, int l, int h){
//双指针反转
while(l < h)
swap(c, l++, h--);
}
//字符交换函数
private void swap(char [] c, int l, int h){
char temp = c[l];
c[l] = c[h];
c[h] = temp;
}

public String ReverseSentence(String str) {
int n = str.length();
char[] c = str.toCharArray();
//第一次整体反转
reverse(c, 0, n - 1);
for(int i = 0; i < n; i++){
int j = i;
//以空格为界找到一个单词
while(j < n && c[j] != ' ')
j++;
//将这个单词反转
reverse(c, i, j - 1);
i = j;
}
return new String(c);
}
}