华为OD机试:按单词下标区间翻转文章内容
题目
给定一段英文文章片段,由若干单词组成,单词间以空格间隔,单词下标从0
开始。
请翻转片段中指定区域的单词顺序并返回翻转后的内容。
例如给定的英文文章片段为I am a developer
,
翻转区间为[0,3]
,则输出developer a am I
。
String reverseWords(String s, int start, int end).
输入
使用换行隔开三个参数,第一个参数为英文文章内容即英文字符串,
第二个参数为待反转内容起始单词下标,
第三个参数为待翻转内容最后一个单词下标。
输出
翻转后的英文文章片段所有单词之间以一个半角空格分隔进行输出。
示例一
输入
I am a developer
1
2
输出
I a am developer
说明
示例二
输入
Hello world
-1
1
输出
world Hello
说明
下标小于0
时从第一个单词开始
示例三
输入
I am a developer
0
5
输出
developer a am I
说明
下标大于实际单词个数,则按最大下标算。
示例四
输入
I am a developer
-2
-1
输出
I am a developer
说明
翻转区间无效时不做翻转。
解题思路
- 读入一个字符串和两个整数 start 和 end。
- 如果 start > end 或 start > len(words) - 1 或 end < 0,则直接输出读入的字符串。
- 否则,通过交换字符串中 words 列表的元素来反转该字符串中的单词。
核心知识点
字符串的切片操作:使用 line.split(" ")
可以将字符串按照空格分割成单词的列表。
列表元素的交换:使用 tmp = words[l]
和