[校招] 英文句子单词反转 - 哔哩哔哩
描述
原地翻转句子中单词的顺序,但单词内字符的顺序不变。要求:空间复杂度O(1),时间复杂度O(n)。
输入
英文句子中单词以一个空格符隔开。为简单起见,标点符号和普通字母一样处理。
输出
翻转之后的英文句子,单词内字符的顺序不变,以一个空格隔开
输入例子
I am a student.
输出例子
student. a am I
import java.util.Scanner;public class SentenceInversion {public static char[] str;public static void reverse (int l, int r) {for (int i = 1; i < r / 2; ++i) {char temp;temp = str[i];str[i] = str[r - i - 1];str[r - i - 1] = temp;}}public static void main(String[] args) {str = new Scanner(System.in).nextLine().toCharArray();reverse(0, str.length);for (int i = 0, k = 0; i < str.length; i++){if (str[i) = ' ') {reverse (k, i + k);k = i + 1;}if (i == str.length - 1) {reverse(k, i + k + 1);}}sout(str);}}