python - 如何从这个递归函数中获得正确的结果?
问题描述
在下一个函数中,我试图返回构造单词的方式数量:target
使用单词的部分列表:word_bank
。
我很难弄清楚为什么它没有返回正确的答案:
def count_construct(target, word_bank):
if target == '':
return 1
total_count = 0
for prefix in word_bank:
if target.startswith(prefix):
new_target = target.replace(prefix, '')
num_ways = count_construct(new_target, word_bank)
total_count += num_ways
return total_count
print(count_construct('enterapotentpot', ['a', 'p', 'ent', 'enter', 'ot', 'o', 't'])) # answer: 4
正确答案应该是4
,但此时它返回1
。
对于下一个测试用例,它工作得很好:
print(count_construct('purple', ['purp', 'p', 'ur', 'le', 'purpl'])) # answer: 2
print(count_construct('abcdef', ['ab', 'abc', 'cd', 'def', 'abcd'])) # answer: 1
print(count_construct('skateboard', ['bo', 'rd', 'ate', 't', 'ska', 'sk', 'boar'])) # answer: 0
如果有人帮助我弄清楚我做错了什么,我将不胜感激。
谢谢你的帮助。
解决方案
@MisterMiyagi 请在评论中添加答案,我在这里添加它以解决问题:
new_target = target.replace(prefix, '')
替换所有出现的target
. 改为使用new_target = target[len(prefix):]
。
推荐阅读
- c# - 迁移到 ASP Core 3.1 后,控制台中的 Razor MVC 无法正常工作
- git-checkout - Git 从 master 分支拉到另一个分支
- loopbackjs - LOOPBACK 4:将环回 Cli 升级到最新版本,当 URL 被过滤器和偏移量命中时,会收到 BAD REQUEST
- session - 使用条带时管理 Flask 会话
- scala - 异步行为测试 akka
- nanoframework - NanoFramework 上的套接字连接
- sql-server - 禁用 SA,创建新登录,将数据库角色成员更改为数据库所有者
- hl7-fhir - _include 在 hapi fhir 中
- sql - 如何在 SQL 中将 NOT IN 语句转换为 NOT EXISTS 语句?
- html - 无法在带有媒体查询的按钮上进行样式设置