华为OD机试 - 句子逆序 - 字符串、逆序遍历(Java 2025 B卷 100分)

在这里插入图片描述

华为OD机试 2025B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+E卷+B卷+C卷+D卷)》

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天优快云在线答疑。

一、题目描述

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”。所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。

数据范围:输入的字符串长度满足 1 ≤ n ≤ 1000 。

注意本题有多组输入。

二、输入描述

输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。

三、输出描述

得到逆序的句子

四、测试用例

测试用例1:

1、输入

I am a boy

2、输出

boy a am I

测试用例2:

1、输入

nowcoder

2、输出

nowcoder

五、解题思路

  1. 程序通过一个 while 循环和 Scanner 对象来持续读取用户输入的多行句子。
  2. 对每一行读入的句子,使用字符串的 split(" ") 方法,以空格为分隔符将其切割成一个一个的单词。这些单词被存储在一个字符串数组 String[] 中。
  3. 通过一个 for 循环,从后往前遍历这个单词数组(即从数组的最后一个元素到第一个元素)。在循环中,依次打印出每个单词,并在单词之间加上空格。

六、Java算法源码

public class OdTest {
    public static void main(String[] args) {
        // 创建 Scanner 对象以读取控制台输入
        Scanner scanner = new Scanner(System.in);

        // 使用 hasNextLine() 来处理多组输入,直到没有更多输入行为止
        while (scanner.hasNextLine()) {
            // 读取一整行输入
            String line = scanner.nextLine();

            // 使用正则表达式 "\\s+" 按一个或多个空格分割字符串,得到单词数组
            // 这样做可以兼容单词间有多个空格的情况
            String[] words = line.split("\\s+");

            // 创建 StringBuilder 对象用于高效拼接字符串
            StringBuilder reversedSentence = new StringBuilder();

            // 从后向前遍历单词数组
            for (int i = words.length - 1; i >= 0; i--) {
                // 将当前单词追加到 StringBuilder
                reversedSentence.append(words[i]);
                // 如果不是第一个单词(即i>0),则在后面追加一个空格作为分隔符
                if (i > 0) {
                    reversedSentence.append(" ");
                }
            }

            // 打印最终结果,trim()方法用于移除可能存在于末尾的多余空格
            // 在本代码的逻辑中,因为最后一个单词后面不加空格,所以trim()不是必须的,但这是一个好的编程习惯
            System.out.println(reversedSentence.toString());
        }

        // 关闭 scanner
        scanner.close();
    }
}

七、效果展示

1、输入

nezha study gpt

2、输出

gpt study nezha

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2025 B卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+E卷+B卷+C卷+D卷)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天优快云在线答疑。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值