如何在不使用reversed()和[::-1]的前提下实现任意字符串的拆分操作?
Python实现字符串反转(禁用
reversed()与[::-1]切片) 基础实现方案(索引倒序遍历)
代码实现
def reverse_str(input_str: str) -> str: res = "" # 从字符串最后一位下标开始往前遍历 for index in range(len(input_str) - 1, -1, -1): res += input_str[index] return res
验证用例
- 普通字符串测试:输入
"abcdefg",返回结果为"gfedcba" - 空字符串测试:输入
"",返回结果为"" - 含特殊字符/中文测试:输入
"!@#123测试",返回结果为"试测321#@!" - 单字符测试:输入
"a",返回结果为"a"
逻辑说明
该实现完全避开禁用的两种方法,仅通过原生的索引遍历和字符串拼接完成反转:
- 先获取输入字符串的长度,确定起始遍历下标为长度减1(字符串下标从0开始)
- 遍历的终止条件为下标等于-1(保证能取到下标为0的第一个字符),遍历步长设为-1,每次下标减1
- 每次遍历取出当前下标对应的字符,追加到结果字符串末尾,遍历结束后得到反转后的字符串
可选实现方案(栈结构实现)
如果不希望使用下标遍历,也可以通过栈的入栈出栈特性实现反转,同样符合要求:
def reverse_str_by_stack(input_str: str) -> str: stack = list(input_str) res = "" while stack: # 弹出列表最后一个元素,等价于栈顶出栈 res += stack.pop() return res
内容的提问来源于stack exchange,提问作者Student
相关产品推荐
相关产品推荐

