LeetCode 1055. 形成字符串的最短路径
题目描述
对于任何字符串,我们可以通过删除其中一些字符(也可能不删除)来构造该字符串的 子序列 。(例如,“ace” 是 “abcde” 的子序列,而 “aec” 不是)。
给定源字符串 source 和目标字符串 target,返回 源字符串 source 中能通过串联形成目标字符串 target 的 子序列 的最小数量 。如果无法通过串联源字符串中的子序列来构造目标字符串,则返回 -1。
示例 1:
输入:source = “abc”, target = “abcbc”
输出:2
解释:目标字符串 “abcbc” 可以由 “abc” 和 “bc” 形成,它们都是源字符串 “abc” 的子序列。
1 <= source.length, target.length <= 1000
source 和 target 仅包含英文小写字母。
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
public int shortestWay(String source, String target) {
int len = source.length();
int j = 0;
int count = 0;
while (j < target.length()) {
int prev = j;
for (int i = 0; i < len; i++) {
if (j < target.length() && source.charAt(i) == target.charAt(j)) {
j++;
}
}
if (prev == j) {
return -1;
}
count++;
}
return count;
}
}
2.知识点
这篇博客介绍了LeetCode上的第1055题,题目要求找到从源字符串source通过最少次串联形成目标字符串target的子序列。文章详细解析了思路,采用了一种动态规划的方法,时间复杂度为O(n),并提供了Java代码示例。此外,还总结了相关知识点,如字符串处理和动态规划策略。
3785

被折叠的 条评论
为什么被折叠?



