反序输出
字符串约 568 字大约 2 分钟
KY4. 反序输出
题目描述
输入任意 4 个字符(如 abcd),按反序输出(如 dcba)。题目可能包含多组用例,每组用例占一行。
输入格式
多行,每行 4 个任意字符。
输出格式
对每组输入,输出一行反序后的字符串。
示例
示例 1
输入:
Upin
cvYj
WJpw
cXOA输出:
nipU
jYvc
wpJW
AOXc解题思路
第一步:理解问题本质
把每行字符串整体反转输出。这是字符串最基础的操作。
第二步:暴力解法
用双指针从头尾交换字符,手动实现反转。可行但代码冗长。
第三步:最优解法(切片反转)
Python 切片 [::-1] 一步完成反转,最简洁高效:
for line in sys.stdin:
# 一行一个用例,读到文件末尾循环自动结束
s = line.rstrip('\n')
# 只去掉行尾换行符:留着它会被一起反序,跑到输出行首
print(s[::-1])[::-1] 表示从头到尾、步长 -1,即逆序取整个字符串。
完整代码实现
import sys
def solve():
# 用例组数未知,一行一组,一直读到文件结束
for line in sys.stdin:
# 先去掉 Unix 的换行 '\n',再去掉 Windows 的回车 '\r'
s = line.rstrip('\n').rstrip('\r')
# 步长 -1 从末尾往前走,逐字符取出即得反序字符串
print(s[::-1])
if __name__ == "__main__":
solve()示例推演
以 Upin 为例:[::-1] 逆序取字符 → nipU。
复杂度分析
| 解法 | 时间复杂度 | 空间复杂度 | 说明 |
|---|---|---|---|
| 双指针反转 | O(n) | O(1) | 需手动实现 |
| 切片反转 | O(n) | O(n) | 一行完成,简洁 |
n 为字符串长度
易错点总结
1. 忘记去换行符
input() 读入带换行,若不 strip()/rstrip('\n'),反序后换行符会跑到行首。
2. 多组用例
题目含多组用例,需用 for line in sys.stdin 循环处理,不能只读一行。
扩展思考
[::-1]反转也可用于回文判断:s == s[::-1]。- 若只反转单词顺序(而非字符),可用
s.split()[::-1]。