티스토리 뷰
반응형
30일 챌린지 9일 차 문제입니다.
Backspace String Compare
- 문제 :
- 풀이 :
class Solution {
public boolean backspaceCompare(String S, String T) {
return convert(S).equals(convert(T));
}
public String convert(String text) {
int count = 0;
StringBuilder new_text = new StringBuilder();
for(int i=text.length()-1; i>=0; i--) {
if(text.charAt(i) == '#') {
count++;
}else {
if(count > 0) {
count--;
}else {
new_text.append(text.charAt(i));
}
}
}
return new_text.toString();
}
}
#이 있으면 다음 문자는 백스페이스로 지우는 문제입니다.
count로 #의 개수를 확인하고 count 만큼 해당 문자를 건너뛰는 방식으로 구현했습니다.
문자는 String 그대로 붙이면 시간 복잡도가 높아지기 때문에 StringBuilder를 사용하여 append 했습니다.
문자 비교는 앞뒤가 상관없기 때문에 뒤에서 시작했지만 순차적으로 추가하고 마지막에 String으로 변화했습니다.
그래서 실제적으로 두 개의 문자열이 같은지 확인하는 방식입니다.
시간 복잡도는 두개의 문자열을 해당 문자열의 길이만큼 for을 돌기 때문에 최대 O(N)입니다.
N은 두 개의 문자열의 길이만큼입니다.
반응형
'알고리즘 > LeetCode 공부' 카테고리의 다른 글
[LeetCode] Java - Move Zeroes (0) | 2020.04.06 |
---|---|
[LeetCode] Java - Maximum Subarray (1) | 2020.04.05 |
[LeetCode] Java - Happy Number (0) | 2020.04.02 |
[LeetCode] Java - Single Number (0) | 2020.04.01 |
[leetCode] Java - Middle of the Linked List (0) | 2020.03.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 버츄얼스튜디오코드
- k8s metrics-server
- 노드
- React 프로젝트 생성
- 파이썬 numpy
- 넘파이
- 지도학습
- CHATGOT
- LeetCode 30일 챌린지
- Python
- Java
- 머신러닝
- 에라토스테네스
- LeetCode 5월 챌린지
- react
- LeetCode 풀이
- 30 Day LeetCode Challenge
- LeetCode 알고리즘 공부
- 리엑트
- k8s metrics-server running
- git
- GPT서비스
- GPTGOT
- vscode
- Component
- Node
- numpy
- Java leetcode
- 파이썬
- 퍼셉트론
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함