1055. Shortest Way to Form String
Medium
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.
Example 3:
Input: source = "xyz", target = "xzyxz" Output: 3 Explanation: The target string can be constructed as follows "xz" + "y" + "xz".
Constraints:
- Both the
source
andtarget
strings consist of only lowercase English letters from "a"-"z". - The lengths of
source
andtarget
string are between1
and1000
.
class Solution { public int shortestWay(String source, String target) { int count = 0, ns = source.length(), nt = target.length(); int t = 0; while(t<nt){ count++; int prev = t; for(int s=0; s<ns; ++s){ if(source.charAt(s) == target.charAt(t)) t++; if(t==nt) return count; } if (t==prev) return -1; } return count; } }
No comments:
Post a Comment