From any string, we can form a subsequence of that string by deleting some number of characters (possibly no deletions).
Given two strings source
and target
, return the minimum number of subsequences of source
such that their concatenation equals target
. If the task is impossible, return -1
.
Example 1:
Input: source = "abc", target = "abcbc"
Output: 2
Explanation: The target "abcbc" can be formed by "abc" and "bc", which are subsequences of source "abc".
Example 2:
Input: source = "abc", target = "acdbc" Output: -1 Explanation: The target string cannot be constructed from the subsequences of source string due to the character "d" in target string.
class Solution { public int shortestWay(String source, String target) { int res = 0; int i = 0; while (i < target.length()) { int next = scan(source, target, i); if (i == next) { return -1; } i = next; res += 1; } return res; } private int scan(String source, String target, int i) { for (char c: source.toCharArray()) { if (i != target.length()) { char cur = target.charAt(i); if (c == cur) { i += 1; } } } return i; } }
[LC] 1055. Shortest Way to Form String
原文:https://www.cnblogs.com/xuanlu/p/12294528.html