[LeetCode] Determine if String Halves Are Alike

아르당·2026년 6월 19일

LeetCode

목록 보기
363/579
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

길이가 짝수인 문자열 s가 주어진다. 문자열을 길이가 같게 두 부분으로 나누고, 첫 번째 부분을 a, 두 번째 부분을 b라고 한다.
두 문자열은 모음('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')의 개수가 같으면 동일한 문자열이다. 문자열 s는 영어 대문자와 소문자 모두 포함한다.

a와 b가 동일하면 ture를 반환하고, 그렇지 않다면 false를 반환해라.

Example

#1
Input: s = "book"
Output: true
Explanation: a = "bo", b = "ok"이다. a는 1개의 모음, b는 1개의 모음을 가진다. 따라서 a와 b는 동일하다.

#2
Input: s = "textbook"
Output: false
Explanation: a = "text", b = "book"이다. a는 1개의 모음, b는 2개의 모음을 가진다. 따라서 a와 b는 동일하지 않다.

Constraints

  • 2 <= s.length <= 1000
  • s.length는 짝수이다.
  • s는 영어 대문자와 소문자로 구성된다.

Solved

class Solution {
    public boolean halvesAreAlike(String s) {
        Set<Character> vowels = new HashSet<>();
        vowels.add('a');
        vowels.add('e');
        vowels.add('i');
        vowels.add('o');
        vowels.add('u');
        vowels.add('A');
        vowels.add('E');
        vowels.add('I');
        vowels.add('O');
        vowels.add('U');

        int count = 0;
        int mid = s.length() / 2;

        for(int i = 0; i < mid; i++){
            char a = s.charAt(i);
            char b = s.charAt(i + mid);

            if(vowels.contains(a)){
                count++;
            }

            if(vowels.contains(b)){
                count--;
            }
        }

        return count == 0;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글