如何修改Python变位词检测代码以跳过空格支持句子级检测
变位词检测代码修改方案
你猜测的问题原因正确,错误是由字符串中的空格导致的:原代码会把空格作为有效字符参与长度校验和排序比对,带空格的句子和压缩掉空格的字符串长度不相等,会直接被判定为非变位词。
修改步骤
- 在字符串转小写处理后,新增去除所有空格的逻辑,调用字符串方法
replace(" ", "")即可移除全部空格字符 - 后续的长度校验、排序、比对逻辑全部基于处理后的无空格字符串执行
修改后的完整代码
str1 = "Race is good" str2 = "Careisgood" # 统一转小写后移除所有空格 str1 = str1.lower().replace(" ", "") str2 = str2.lower().replace(" ", "") # 校验长度是否一致 if len(str1) == len(str2): # 对字符串排序 sorted_str1 = sorted(str1) sorted_str2 = sorted(str2) # 比对排序结果 if sorted_str1 == sorted_str2: print(f"{str1} 和 {str2} 是变位词") else: print(f"{str1} 和 {str2} 不是变位词") else: print(f"{str1} 和 {str2} 不是变位词")
效果验证
针对你给出的测试用例,处理后两个字符串都变为raceisgood,长度一致且排序后结果完全相同,代码会正确判定为变位词。如果需要跳过其他特殊字符(比如标点符号),也可以参考同样的逻辑,提前过滤掉不需要参与比对的字符即可。
内容的提问来源于stack exchange,提问作者Franci
相关产品推荐
相关产品推荐

