You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正代码,找出字符串中重复单词及其两次出现的位置?

修正重复单词位置输出的代码方案

问题根源

你当前的代码会遍历每个单词,只要检测到该单词重复就打印一次单词和当前索引,导致同一个重复单词被多次输出(比如示例中的tea会在两个位置分别输出一次),不符合只输出一次单词+所有位置的需求。

修正方案

改用字典统一收集每个单词的所有位置,之后筛选出有多个位置的单词,一次性输出单词和对应的所有位置。以下是两种索引计数版本的代码:

1. 1-based位置(从1开始计数)

string = input().strip()
word_list = string.split()

# 用字典存储每个单词对应的所有位置
word_positions = {}
for idx, word in enumerate(word_list, start=1):
    if word not in word_positions:
        word_positions[word] = []
    word_positions[word].append(idx)

# 输出重复单词及其所有位置
for word, positions in word_positions.items():
    if len(positions) > 1:
        print(f"{word} {' '.join(map(str, positions))}")

测试输入juice bread tea water apple tea carrot coconut,输出为:tea 3 6(注:你给出的期望输出tea 1 4与输入单词位置不匹配,推测是输入示例或期望输出笔误,此代码逻辑为标准1-based位置计数)

2. 0-based位置(与你现有代码的索引逻辑一致)

string = input().strip()
word_list = string.split()

word_positions = {}
for idx, word in enumerate(word_list):
    if word not in word_positions:
        word_positions[word] = []
    word_positions[word].append(idx)

for word, positions in word_positions.items():
    if len(positions) > 1:
        print(f"{word} {' '.join(map(str, positions))}")

测试输入同上,输出为:tea 2 5,解决了原代码重复打印单词的问题。

内容的提问来源于stack exchange,提问作者Badgerator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:35:19