Python判断能否用word2字符构造word1代码运行异常如何解决
代码逻辑问题
- 循环条件错误:当前仅当
word2和word1末尾字符相等时才会进入循环,若初始字符不相等,循环直接跳过,直接执行最后一行的「可以构造」输出,这是测试结果不符合预期的核心原因。 - 缩进逻辑错误:
b -= 1(word1指针前移的代码)不在循环体内,匹配过程中word1的指针永远不会移动,完全不符合你设计的「字符不等则前移word1指针」的思路。 - 判断逻辑倒置:你把「不能构造」的输出写在了循环内部的else分支,只要计数没归零就输出不能构造,和实际需求完全相反;且没有在循环结束后才根据计数最终判断是否构造成功。
- 缺少边界校验:指针前移到0之后继续访问
[a-1]/[b-1]会触发索引越界错误,你当前没报错只是因为循环大多时候没有执行。
修复后代码
word1 = input() word2 = input() # 指针分别指向两个单词的末尾索引 p1 = len(word1) - 1 p2 = len(word2) - 1 match_count = 0 while p1 >= 0 and p2 >= 0: if word1[p1] == word2[p2]: match_count += 1 p2 -= 1 p1 -= 1 # 匹配到的字符数等于word1长度就可以构造 if match_count == len(word1): print('it can be made') else: print('it cant be made')
内容的提问来源于stack exchange,提问作者nicksuc
相关产品推荐
相关产品推荐

