📖 오늘의 학습 키워드
문자열
[Remove K Digits]
https://leetcode.com/problems/remove-k-digits/description/
class Solution {
public String removeKdigits(String num, int k) {
if (num.length() <= k) {
return "0";
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < num.length(); i++) {
while(!stack.isEmpty() && stack.peek() > num.charAt(i) && k > 0) {
stack.pop();
k--;
}
stack.push(num.charAt(i));
}
while (k > 0){
stack.pop();
k--;
}
StringBuilder answer = new StringBuilder();
for (Character c : stack) {
answer.append(c);
}
while(answer.length() > 1 && answer.charAt(0) == '0'){
answer.deleteCharAt(0);
}
return answer.toString();
}
}
실행 시간 단축하기
while(!stack.isEmpty()) {
answer.insert(0, stack.pop());
}
stack 안에 남은 숫자를 answer에 추가할 때, 처음에는 stack에서 pop해서 answer 맨 앞에 추가하는 방식으로 진행했다.
for (Character c : stack) {
answer.append(c);
}
위 코드에서 for문을 이용해 stack 안 숫자를 들어간 순서대로 그대로 꺼내는 방식으로 수정하니 다음과 같이 실행 시간을 단축할 수 있었다.