Algorithm/LeetCode

[LeetCode] Make The String Great

문제

 

소문자와 대문자가 섞인 문자열 s가 주어진다.

인접한 문자가 서로 같은 알파벳이면서 대 소문자로 차이가 난다면 쌍소멸 시키는 문제인듯 하다.

조건

2글자 이상

자료구조에 저장시켜서 지금저장 시킨것과 2차례전에 저장시킨것이 ASCII코드 +- 32차이가 나는지 확인하고

만약 그렇다면 모두 날려버리기

vice-versa == 이 경우에도 그 반대의 경우에도 마찬가지이다.

 

구글링하다가 c++ stack으로 푸신 분이 계셔서 ArrayList로 접근

class Solution {
   public String makeGood(String s) {
		String result = "";
		
		ArrayList<Character> temp = new ArrayList();
		for(int i = 0; i < s.length(); i++)
		{
			temp.add(s.charAt(i));
			if(temp.size() >= 2 && (temp.get(temp.size()) + 'a' - 'A') == (temp.get(temp.size()-2)) 
					|| (temp.get(temp.size()) + 'A' - 'a') == (temp.get(temp.size()-2)))
			{
				temp.remove(temp.size());
				temp.remove(temp.size());
			}
		}
		return temp.toString();
    }
}
// outbound

 

영 안풀려서 해답을 봐버렸다.

class Solution {
   public String makeGood(String s) {
       for (int i = 0; i < s.length() - 1; i++) {
            char a = s.charAt(i);
            char b = s.charAt(i + 1);
            if (a != b && Character.toLowerCase(a) == Character.toLowerCase(b)) {
                return makeGood(s.substring(0, i) + s.substring(i+2));
            }
        }
        return s;
    }
}
s가 leEeetcode를 넣었을 때 변수의 값
current String : leEeetcode
current i : 0
a : l
b : e
current String : leEeetcode
current i : 1
a : e
b : E
current String : leetcode
current i : 0
a : l
b : e
current String : leetcode
current i : 1
a : e
b : e
current String : leetcode
current i : 2
a : e
b : t
current String : leetcode
current i : 3
a : t
b : c
current String : leetcode
current i : 4
a : c
b : o
current String : leetcode
current i : 5
a : o
b : d
current String : leetcode
current i : 6
a : d
b : e

 

 

leetcode.com/problems/make-the-string-great/

 

Make The String Great - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

'Algorithm > LeetCode' 카테고리의 다른 글

[LeetCode] Divisor Game  (0) 2021.03.08
[LeetCode] Fibonacci number (피보나치 수열)  (0) 2021.03.06
[LeetCode] Sort Colors  (0) 2021.03.05
[LeetCode] Assign Cookies  (3) 2021.03.03
[LeetCode] Palindrome Number (대칭수)  (0) 2021.03.02