300x250
반응형
https://leetcode.com/problems/removing-stars-from-a-string/description/
stack 키워드를 보고 풀기 시작한 문제인데
정작 스택 사용해서 푼 솔루션은 런타임이 좋지 않고
char[] 이용해서 풀었을 때 속도가 잘나왔다. (솔루션 참고)
stack 이용한 풀이
class Solution {
public String removeStars(String s) {
Stack<Character> stk = new Stack<>();
for(char c : s.toCharArray()){
if(c=='*') stk.pop();
else stk.push(c);
}
char[] ret = new char[stk.size()];
for(int i=ret.length-1; i>=0; i--){
ret[i]=stk.pop();
}
return String.valueOf(ret);
}
}
그래프상으로 런타임이 상위권인 것처럼 보이지만 비트는 67%밖에 안됨
상세보기를 하면 내 앞에 우르르 몰려있다.
스택 버리고 char[]만 이용해서 풀기
class Solution {
public String removeStars(String s) {
char[] ca = s.toCharArray();
char[] ret = new char[ca.length];
int reti =0;
for(int i=0; i<ca.length; i++){
if(ca[i]=='*'){
reti--;
} else {
ret[reti++]=ca[i];
}
}
return new String(ret, 0, reti);
}
}
new String(char[] arr, int a, int b) 이렇게 하면
substring(a, b)와 유사하게 arr에서 a부터 b까지 잘라준다고 함
그러니까 ret 어레이의 길이를 생각할 필요 없이 reti까지 잘라서 리턴하면 됨
300x250
반응형
'IT > 알고리즘' 카테고리의 다른 글
LeetCode 791. Custom Sort String (0) | 2024.03.02 |
---|---|
set에서 add()의 리턴값을 bool로 사용하기 (LeetCode 219) (1) | 2023.08.29 |
[프로그래머스] 문자열 계산하기, 인덱스 바꾸 (0) | 2023.06.28 |
[프로그래머스] 피자 나눠 먹기(3), 중앙값 구하기 (0) | 2023.06.21 |
프로그래머스 Lv.0 최댓값 만들기(2) (0) | 2023.05.24 |