目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。
例如输入字符串”I am a developer. “,区间[0,3],则输出”developer. a am I”。
二、输入描述
使用换行隔开三个参数
第一个参数为英文文章内容即英文字符串
第二个参数为翻转起始单词下标(下标从0开始)
第三个参数为结束单词下标
三、输出描述
翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出。
四、解题思路
此题属于送分题,大家好好把握。
关键点就是从开始下角标到结束下角标,进行字符串的替换。
开始反转了 and 反转次数 <= 起始差值,则进行字符串反转。
五、Java算法源码
package com.guor.od;
import java.util.*;
public class OdTest03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
// 开始下标
int startIndex = Integer.valueOf(sc.nextLine());
// 结束下标
int endIndex = Integer.valueOf(sc.nextLine());
String[] arr = input.split(" ");
// Nezha loves learning Java A B C 1 4 -- Nezha A Java learning loves B C
StringBuilder reverseBuilder = new StringBuilder();
boolean reverseFlag = false;
// 起始差值
int diff = endIndex - startIndex;
// 反转次数
int times = 0;
for (int i = 0; i < arr.length; i++) {
// 开始反转了
if (startIndex == i) {
reverseFlag = true;
}
// 开始反转了 and 反转次数 <= 起始差值,则进行字符串反转
if (reverseFlag && times <= diff) {
reverseBuilder.append(arr[endIndex - times]).append(" ");
times++;
continue;
}
reverseBuilder.append(arr[i]).append(" ");
}
System.out.println(reverseBuilder);
}
}
六、效果展示
1、输入
Nezha loves learning Java A B C
1
4
2、输出
Nezha A Java learning loves B C
3、说明
- 下角标为1的字符串是loves,和下角标为4的A交换;
- 下角标为2的字符串 learning 和下角标为3的Java交换;
- 输出结果Nezha A Java learning loves B C
🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。