
目录
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
- 4、再输入
- 5、处理非法输入,确保通过率100%,千万不要大意失荆州
 
 
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
感谢@艾玛·沃特森提供的华为OD机试真题2023Q2 100分“按单词下标区间翻转文章内容”,这估计是年度最简单题目了,已现金红包感谢。
祝大家考试顺序,也能碰到如此送分题,难道和头像有关系?
考试之前,拜一拜,没坏处~

题目有点草啊,我整理一下。
一、题目描述
给定一段英文文章片段,由若干单词组成,单词间以空格间隔,单词下标从0开始。
请翻转片段中指定区间的单词顺序并返回翻转后的内容。
例如:
给定的英文文章片段为"I am nezha soft",翻转区间为[0,3],
则输出“soft nezha am I”。
二、输入描述
- 第一行输入英文文章内容即英文字符串;
- 第二行输入待翻转内容起始单词下标;
- 第三行输入待翻转内容最后一个单词下标。
三、输出描述
翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出。
备注:
英文文章内容首尾无空格。
四、解题思路
- 第一行输入英文字符串;
- 第二行输入起始单词下标;
- 第三行输入最后一个单词下标;
- 处理非法输入 
  - 如果是负数,当做0处理;
- 如果大于数组最大长度,当做数组最大长度处理;
 
- 定义变量reversalIndex,表示待反转的字符串下角标;
- 定义变量flag,表示是否开始反转;
- 遍历英文字符串; 
  - 判断是否开始反转;
- 如果开始反转; 
    - 输出开始反转的字符串;
- 反转到最开始的下角标处结束;
 
- 如果未开始反转;
- 输出当前字符;
 
五、Java算法源码
package com.guor.od;
import java.util.*;
public class OdTest {
    public static void main(String[] args) {
        // 英文字符串
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        String arr[] = input.split(" ");
        // 起始单词下标
        int start = sc.nextInt();
        // 最后一个单词下标
        int end = sc.nextInt();
        // 处理非法输入
        if (end < 0 && start < 0 || start > end) {
            System.out.println(input);
            return;
        }
        // 如果是负数,当做0处理
        if (start < 0) {
            start = 0;
        }
        // 如果大于数组最大长度,当做数组最大长度处理
        if (end > arr.length - 1) {
            end = arr.length - 1;
        }
        // 待反转的字符串下角标
        int reversalIndex = end;
        // 是否开始反转
        boolean reversalStartFlag = false;
        for (int i = 0; i < arr.length; i++) {
            // 开始反转
            if(i == start){
                reversalStartFlag = true;
            }
            // 反转
            if(reversalStartFlag){
                System.out.print(arr[reversalIndex]+" ");
                // 反转到最开始的下角标处结束
                if (reversalIndex == start){
                    reversalStartFlag = false;
                }
                reversalIndex--;
            }else{
                System.out.print(arr[i]+" ");
            }
        }
    }
}
六、效果展示
1、输入
nezha love study java !
 1 3
2、输出
nezha java study love !
3、说明
- 从下角标1开始反转,反转到下角标3;
- 即love处变为java,study依旧是study,java变为love;
- 输出nezha java study love ! 。

4、再输入
nezha love study java !
 -2 3
如果有负数,按照题意
如果是负数,当做0处理;
如果大于数组最大长度,当做数组最大长度处理;
在做题时,这些异常情况都要考虑到,才能通过率100%。

5、处理非法输入,确保通过率100%,千万不要大意失荆州

🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。




















