https://leetcode.com/problems/make-the-string-great/
문제 이해
대문자 소문자 영어단어를 가진 문자열 ‘s’가 주어진다
s[i]다음 s[i+1]자리에 동일한 단어지만 형태가 다른 글자가 들어온다면 지워준다
-> ”대문자+소문자, 소문자+대문자”
EX) “leEeetcode” → eE → “leetcode” ”abBAcC” → bB → “aAcC” → aA → “cC” → cC → “”
문제 풀이
아스키 코드 특징을 이용하여 비교
동일한 영어단어의 아스키코드 번호는 무조껀 32가 차이난다
절대값을 구해서 32가 나오면 true 아니라면 false값을 리턴하여 문제를 풀어나감
class Solution {
public String makeGood(String s) {
//같은 단어이지만
//소문자+대문자 로 구성되면 삭제
Stack<Character> st = new Stack<>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(st.size() > 0) {
char top = st.peek();
boolean flag = compareChar(top, c);
if(flag == true){
st.pop();
} else {
st.push(c);
}
} else {
st.push(c);
}
}
for(char c : st){
sb.append(c);
}
return sb.toString();
}
//아스키코드를 이용한 영어단어 대소문자 비교
public boolean compareChar(char a, char b) {
int num1 = a;
int num2 = b;
int asc = num1 - num2;
//대문자<->소문자 = 32차이
if (Math.abs(asc) == 32) {
return true;
} else {
return false;
}
}
}
'Algorithm > leetcode' 카테고리의 다른 글
[leetcode]1381. Design a Stack With Increment Operation (0) | 2023.09.01 |
---|---|
[leetcode]1074.Remove All Adjacent Duplicates In String (0) | 2023.08.30 |
[leetcode] 1614. Maximum Nesting Depth of the Parentheses (0) | 2023.08.29 |
[leetcode] 1021.Remove Outermost Parentheses (0) | 2023.08.28 |
[leetcode] 844.Backspace String compare (0) | 2023.08.27 |