2014 - Longest Subsequence Repeated k Times
info
- 문제 보기: 2014 - Longest Subsequence Repeated k Times
- 소요 시간: 25분 25초
- 풀이 언어:
java
- 체감 난이도: 3️⃣~4️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
완전탐색
bfs
풀이 코드
info
- 메모리: 45420 KB
- 시간: 535 ms
class Solution {
String s;
int k;
boolean hasK(String ss) { // ss: subsequence
int i = 0; // index of ss
int cnt = 0; // count of ss appearance in s
char[] ssArr = ss.toCharArray();
for (char ch : s.toCharArray()) {
if (ch == ssArr[i]) {
++i;
if (i >= ssArr.length) {
i = 0;
++cnt;
if (cnt == k) return true;
}
}
}
return false;
}
public String longestSubsequenceRepeatedK(String s, int k) {
this.s = s;
this.k = k;
String ans = "";
Deque<String> dq = new ArrayDeque<>();
dq.add("");
while (!dq.isEmpty()) {
String cand = dq.poll();
for (char ch = 'a'; ch <= 'z'; ++ch) {
String nCand = cand + ch;
if (hasK(nCand)) {
ans = nCand;
dq.add(nCand);
}
}
}
return ans;
}
}