leetcode 4. Valid Palindrome

허크·2023년 8월 26일
0

https://leetcode.com/problems/valid-palindrome/?envType=study-plan-v2&envId=top-interview-150

125. Valid Palindrome

⭐ 문제

대문자를 소문자로, 알파벳과 숫자가 아닌 문제를 제거한 한 후에 앞으로나 뒤로나 동일하게 읽을 수 있을 경우 팰린드롬이라고 합니다. 주어진 문자열이 팰린드롬인지 true, false 반환하세요

🤔 고려해야할 사항

  1. 문장의 글자하나하나를 처리해야함
    => 글자별로 나눠서 배열에 담기
  2. 대문자를 소문자로
    => 배열에 담을때 대문자일 경우 소문자로 변환
  3. 알파벳과 숫자가 아닌 문자를 제거
    => 배열에 담을때 알파벳과 숫자에 해당할 경우에만 배열에 담도록 허용
  4. 앞으로나 뒤로나 동일하게 읽을 수 있어야함
    => 앞과 뒤 각각 진행하면서 동일하면 pass, 동일하지 않다면 false 반환

✍️ 의사 코드

  1. 문장의 글자를 순회하면서
    1.1 알파벳과 숫자에 해당할 경우
    대문자일 경우 소문자로 변환
    후 배열에 삽입
  2. 배열의 각 양끝에서 한 글자씩 순회
    동일하다면 pass
    다르다면 false 반환

✅ 나의 풀이

class Solution {
    public boolean isPalindrome(String s) {

        List<Character> charList = new ArrayList<>();

        for (char c : s.toCharArray()) {
            if (Character.isLetterOrDigit(c)) {
                if (Character.isUpperCase(c)) {
                    c = Character.toLowerCase(c);
                }
                charList.add(c);
            }
        }

        int start = 0; 
        int end = charList.size() - 1; 

        while (start <= end) {
            if (charList.get(start).equals(charList.get(end))) {
            } else {
                return false;
            }
            start++;
            end--;
        }
        return true;
    }
}

🖥️ 결과

Runtime: 0 ms

profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글