按奇偶单词数反转对应位置单词的字符串处理实现咨询
实现建议与代码示例
不用纠结中部拆分的问题,直接按以下步骤处理就搞定:
核心处理步骤
- 拆分成单词数组:把输入字符串按空格拆成单个单词的列表,这是处理每个单词的基础。
- 确定要反转的单词位置:
- 如果单词总数是偶数:挑所有第2、4、6...位的单词(从1开始数,对应示例里的Yadav、Rajput、Pundir)
- 如果单词总数是奇数:挑所有第1、3、5...位的单词
- 反转目标单词:把选中的每个单词单独反转。
- 拼接结果:先把反转后的单词按原位置顺序放在前面,再把剩下没反转的单词按原来的顺序接在后面,拼成最终字符串。
Python代码示例
def process_input_string(s): # 拆分字符串为单词列表 word_list = s.split() total_words = len(word_list) # 筛选需要反转的单词的索引(转成0索引对应题目要求的1开始计数) if total_words % 2 == 0: # 偶数总数:选原2、4、6位 → 对应0索引的1、3、5 target_indexes = [i for i in range(total_words) if (i + 1) % 2 == 0] else: # 奇数总数:选原1、3、5位 → 对应0索引的0、2、4 target_indexes = [i for i in range(total_words) if (i + 1) % 2 == 1] # 生成反转后的单词列表和剩余单词列表 reversed_part = [word_list[i][::-1] for i in target_indexes] remaining_part = [word_list[i] for i in range(total_words) if i not in target_indexes] # 拼接成最终字符串 return ' '.join(reversed_part + remaining_part) # 测试示例输入 test_input = "Ashish Yadav Abhishek Rajput Sunil Pundir" print(process_input_string(test_input)) # 输出结果:ridnuP tupjaR vadaY Ashish Abhishek Sunil
关键细节说明
- 位置计数:题目里的“偶数位置”“奇数位置”是从1开始数的,所以代码里用
(i+1) % 2来转换Python的0索引体系,别搞混了。 - 为啥不用中部拆分:你的困惑点完全没必要,根本不需要拆分数组中间,只要精准筛选对应位置的单词就行,逻辑更清晰。
- 反转单词的方法:不同语言有不同实现,比如Java可以用
new StringBuilder(word).reverse().toString(),JavaScript用word.split('').reverse().join(''),核心都是把单词的字符顺序倒转。
内容的提问来源于stack exchange,提问作者Ílaya
相关产品推荐
相关产品推荐

