2025-02-26:最小代价构造字符串。用go语言,给定一个目标字符串 target、一个字符串数组 words 和一个整数数组 costs,这两个数组的长度相同。
想象一个空字符串 s,你可以执行以下操作任意次数(包括0次):
1.从 words 数组中选择一个索引 i,满足 0 ≤ i < words.length。
2.将 words[i] 添加到 s。
3.进行此操作的费用为 costs[i]。
你的任务是返回使得 s 等于 target 的最小花费。如果无法构造出 target,则返回 -1。
1 <= target.length <= 5 * 10000。
1 <= words.length == costs.length <= 5 * 10000。
1 <= words[i].length <= target.length。
所有 words[i].length 的总和小于或等于 5 * 10000。
target 和 words[i] 仅由小写英文字母组成。
1 <= costs[i] <= 10000。
输入: target = "abcdef", words = ["abdef","abc","d","def","ef"], costs = [100,1,1,10,5]。
输出: 7。
解释:
选择索引 1 并以成本 1 将 "abc" 追加到 s,得到 s = "abc"。
选择索引 2 并以成本 1 将 "d" 追加到 s,得到 s = "abcd"。
选择索引 4 并以成本 5 将 "ef" 追加到 s,得到 s = "abcdef"。
相似问题