酷代码 AI
菜单
服务商

上一个代码非零返回

使用 Python 编写的代码在处理输入样例时出现非零返回的问题,可能是在计算单词首次出现位置时逻辑有误,对单词和空格的处理不准确,从而导致计算出的位置出错。Python 代码可能没有考虑到文章首尾存在连续空格的情况,这也会影响位置的计算准确性。 解决方案 以下是优化后的 Python 代码,综合考虑各种边界情况,借助正则表达式和字符串的处理方法来准确计算单词出现次数和首次出现位置,确保计算的准确性。 ```python import re # 读取输入的目标单词,并转换为小写 target_word = input().lower() # 读取文章内容,并转换为小写 article = input().lower() # 构建正则表达式模式,用于匹配独立的目标单词 pattern = r'\b' + re.escape(target_word) + r'\b' # 使用 finditer 函数查找所有匹配的单词 matches = list(re.finditer(pattern, article)) # 计算匹配的数量 count = len(matches) # 如果有匹配结果 if count: # 获取第一个匹配结果的起始位置 first_position = matches[0].start() print(f"{count} {first_position}") else: print(-1) ``` 代码解释 1. 正则表达式的使用:代码中使用 `r'\b' + re.escape(target_word) + r'\b'` 来构建正则表达式模式,其中 `\b` 是单词边界的元字符,`re.escape(target_word)` 会对目标单词中的特殊字符进行转义,确保正则表达式能够正确匹配目标单词。 2. 查找所有匹配:使用 `re.finditer(pattern, article)` 函数来查找文章中所有匹配目标单词的位置,结果存储在 `matches` 列表中。 3. 计算匹配数量和首次出现位置:通过 `len(matches)` 计算匹配的数量 `count`,若 `count` 大于 0,则通过 `matches[0].start()` 获取第一个匹配结果的起始位置 `first_position`。 这个代码逻辑简单明了,避免了之前位置计算时的复杂逻辑,同时保证了在各种情况下都能准确计算目标单词的出现次数和首次出现位置。 [2025-12-15 17:34:18 | AI问答 | 506点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多