📜  门| GATE 2017 MOCK II |问题23(1)

📅  最后修改于: 2023-12-03 15:42:10.330000             🧑  作者: Mango

门| GATE 2017 MOCK II |问题23

在这个问题中,我们需要使用Java编写一个程序,将输入的含有若干个单词的句子反转,但单词内的字符顺序不变。

输入格式

输入一个整数T,代表测试用例数量。每个测试用例由一个字符串S组成,S中包含多个单词,单词之间用空格隔开。S长度不超过4000个字符。

输出格式

输出每个测试用例反转后的字符串,单词之间使用单个空格隔开。

思路分析

将输入的字符串以空格为分隔符切割成字符串数组,然后遍历数组元素进行倒序拼接形成反转后的句子。

代码实现

下面是基于Java语言的代码实现,使用String.split()方法对输入句子进行分割,使用StringBuilder对分割后的字符串数组进行拼接操作:

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        sc.nextLine();
        while(t-- > 0) {
            StringBuilder sb = new StringBuilder();
            String s = sc.nextLine();
            String[] arr = s.split("\\s+");
            for(int i = arr.length - 1; i >= 0; i--) {
                sb.append(arr[i]).append(" ");
            }
            System.out.println(sb.toString().trim());
        }
    }
}

其中,t 表示测试用例数量,使用while(t-- > 0)进行循环遍历。

接着使用String s = sc.nextLine()读取输入的句子,然后使用s.split("\\s+")方法将句子按空格分割成字符串数组。

使用StringBuilder sb = new StringBuilder()初始化字符串拼接对象。

然后使用 for(int i = arr.length - 1; i >= 0; i--) 倒序遍历字符串数组中的元素,使用sb.append(arr[i]).append(" ")将每个单词拼接成一个新的字符串。

最后使用System.out.println(sb.toString().trim())输出反转后的句子,其中使用trim()方法去除首尾空格。

总结

这个问题需要用到字符串分割和字符串拼接操作,考查了考生对基本字符串操作的掌握程度和对循环的使用能力。