如何对长度≥3的字符串按指定规则转换生成新字符串并输出
字符串转换需求实现方案
解决思路
- 先确定原字符串长度
n,题目已保证n≥3,无需额外校验长度合法性 - 计算中间位置索引:不管
n是奇数还是偶数,直接用n // 2即可满足规则要求:n为奇数时,刚好是长度除以2向下取整的索引n为偶数时,刚好是长度除以2的索引
- 明确替换规则:新字符串和原字符串长度完全一致,仅三个位置需要修改,其余位置和原串保持一致:
- 新串首字符(索引0)替换为原串中间位置的字符
- 新串中间位置的字符替换为原串的最后一个字符
- 新串末尾字符(索引-1)替换为原串的首字符
- 最后按要求格式输出结果即可
代码实现(Python版本)
def transform_string(s): n = len(s) mid_idx = n // 2 # 字符串为不可变类型,转为列表方便修改 s_list = list(s) # 提前暂存待替换的原字符,避免覆盖丢失 original_mid = s_list[mid_idx] original_last = s_list[-1] original_first = s_list[0] # 对应位置赋值 s_list[0] = original_mid s_list[mid_idx] = original_last s_list[-1] = original_first # 转回字符串返回 return ''.join(s_list) # 测试用例 if __name__ == "__main__": # 奇数长度测试 odd_test = "afffbeeec" odd_res = transform_string(odd_test) print(f"The rotated string is {odd_res}") # 偶数长度测试 even_test = "axxxbyyc" even_res = transform_string(even_test) print(f"The rotated string is {even_res}")
运行输出
The rotated string is bfffceeea The rotated string is bxxxcyya
与题目给出的示例结果完全匹配。
内容的提问来源于stack exchange,提问作者Yoni Agronov
相关产品推荐
相关产品推荐

