Shortest Way to Form String - Problem
A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. For example, "ace" is a subsequence of "abcde" while "aec" is not.
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.
Input & Output
Example 1 — Basic Case
$
Input:
source = "abc", target = "abcbc"
›
Output:
2
💡 Note:
First subsequence: "abc" matches "abc". Second subsequence: "bc" matches remaining "bc". Total: 2 subsequences needed.
Example 2 — Single Character
$
Input:
source = "abc", target = "aaa"
›
Output:
-1
💡 Note:
Source only has one 'a' at position 0, but target needs three 'a's. Since 'a' appears only once in source, it's impossible to form target.
Example 3 — Perfect Match
$
Input:
source = "xyz", target = "xz"
›
Output:
1
💡 Note:
Target "xz" can be formed as a single subsequence from source "xyz" by taking characters at positions 0 and 2.
Constraints
- 1 ≤ source.length, target.length ≤ 1000
- source and target consist of lowercase English letters
Visualization
Tap to expand
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code