首先输入数据有三个:
字符串s是根据空格做分隔符的,可以把它分割后放入数组中。左右边界a和b需要注意输入不合法的异常情况,也就是边界条件判断需要考虑周全。
接下来理解题干
翻转部分区间的意思是:给定一个字符串,只翻转区间[a, b]内的单词,其他位置保持原样
最后做题思路
输入数据->判断边界条件->翻转给定区间->放回原数组->打印结果
- 代码及注释
- # 按规定格式打印结果
- def print_str(s):
- if len(s) == 0:
- print('')
- return
- print(s[0], end='') # end='',print不换行
- for i in range(1, len(s)):
- print('', s[i], end='')
- # 翻转区间
- def reverseWords(str1, a, b):
- # 输入字符串为空的情况
- if str1 == '':
- print('')
- return
- # 将输入字符串根据分隔符空格进行分割
- str1 = str1.split(' ')
- # 下面四个if是边界条件
- if b <= 0:
- print_str(str1)
- return
- if a < 0:
- a = 0
- if a >= len(str1):
- print_str(str1)
- return
- if b >= len(str1):
- b = len(str1)-1
- # 翻转区间[a:b+1],放入另一空间str2
- str2 = str1[a:b+1][::-1]
- # 按原有位置,将str2覆盖str1
- j = 0
- for i in range(a,b+1):
- str1[i] = str2[j]
- j += 1
- # 打印最终结果
- print_str(str1)
- # 键盘输入初始数据
- str1 = input()
- a = int(input())
- b = int(input())
- reverseWords(str1, a, b)