3170 - Lexicographically Minimum String After Removing Stars
정보
- 문제 보기: 3170 - Lexicographically Minimum String After Removing Stars
- 소요 시간: 31분 50초
- 풀이 언어:
java - 체감 난이도: 3️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
그리디 힙
풀이 코드
정보
- 메모리: 49840 KB
- 시간: 184 ms
class Solution {
public String clearStars(String s) {
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> {
if (a[0] != b[0]) {
return a[0] - b[0]; // asc
}
else {
return b[1] - a[1]; // desc
}
});
char[] sArr = s.toCharArray();
boolean[] removed = new boolean[sArr.length];
for (int i = 0; i < sArr.length; ++i) {
char ch = sArr[i];
if (ch != '*')
pq.add(new int[]{ch, i});
else {
int[] e = pq.poll();
removed[i] = true; // remove star
removed[e[1]] = true; // remove target letter
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < sArr.length; ++i) {
if (!removed[i]) sb.append(sArr[i]);
}
return sb.toString();
}
}