2140 Longest Subsequence Repeated K Times
2140 Longest Subsequence Repeated K Times
Longest Subsequence Repeated k Times 
You are given a string s of length n, and an integer k. You are tasked to find the longest subsequence repeated k times in string s.
A subsequence is a string that can be derived from another string by deleting some or no characters without changing the order of the remaining characters.
A subsequence seq is repeated k times in the string s if seq * k is a subsequence of s, where seq * k represents a string constructed by concatenating seq k times.
1
For example, "bba" is repeated 2 times in the string "bababcba", because the string "bbabba", constructed by concatenating "bba" 2 times, is a subsequence of the string "**b**a**bab**c**ba**".
Return the longest subsequence repeated *k times in string s. If multiple such subsequences are found, return the lexicographically largest one. If there is no such subsequence, return an empty string*.
Example 1:
1
2
3
4
5
6
**Input:** s = "letsleetcode", k = 2
**Output:** "let"
**Explanation:** There are two longest subsequences repeated 2 times: "let" and "ete".
"let" is the lexicographically largest one.
Example 2:
1
2
3
4
5
**Input:** s = "bb", k = 2
**Output:** "b"
**Explanation:** The longest subsequence repeated 2 times is "b".
Example 3:
1
2
3
4
5
**Input:** s = "ab", k = 2
**Output:** ""
**Explanation:** There is no subsequence repeated 2 times. Empty string is returned.
Constraints:
1
2
3
4
n == s.length
2 <= n, k <= 2000
2 <= n < k * 8
s consists of lowercase English letters.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution:
def longestSubsequenceRepeatedK(self, s: str, k: int) -> str:
ans = ""
candidate = sorted(
[c for c, w in Counter(s).items() if w >= k], reverse=True
)
q = deque(candidate)
while q:
curr = q.popleft()
if len(curr) > len(ans):
ans = curr
# generate the next candidate string
for ch in candidate:
nxt = curr + ch
it = iter(s)
if all(ch in it for ch in nxt * k):
q.append(nxt)
return ans
This post is licensed under CC BY 4.0 by the author.
