Python非递归实现字符串前后半段交换的flipside函数问题咨询
现有代码问题反馈
- 空字符串返回值类型不统一:函数的核心功能是返回处理后的字符串,空输入时返回整数
0会导致后续调用该函数时容易触发类型错误,正确的返回值应为空字符串''。 - 缺失核心逻辑前置步骤:你没有计算字符串长度和半长的相关代码,无法完成前后半段的拆分。
- 存在语法错误:
fliprest =后无赋值内容,直接运行会抛出语法异常。 - 空串判断写法冗余:
s == ('')可简化为更符合Python编程习惯的if not s。
非递归实现逻辑思路
该功能核心依赖Python原生的字符串切片能力,不需要递归即可实现,具体步骤如下:
- 计算输入字符串的总长度
len(s) - 用整数除法计算半长
half = len(s) // 2,该写法可兼容奇偶两种长度的输入:比如长度为8时半长为4,长度为5时半长为2,符合常规的拆分规则 - 用切片获取后半段字符串
s[half:]、前半段字符串s[:half],直接将后半段拼接在前半段之前即可得到目标结果
完整可运行代码
def flipside(s): if not s: return '' half = len(s) // 2 return s[half:] + s[:half]
测试验证:
- 输入
flipside('homework'),输出结果为workhome,符合需求 - 输入
flipside('abcde'),输出结果为cdeab,奇数长度场景运行正常 - 输入
flipside(''),输出空字符串,返回类型统一
内容的提问来源于stack exchange,提问作者Mark Donovan
相关产品推荐
相关产品推荐

