늘 겸손하게

LeetCode 1704 - Determine if String Halves Are Alike ( Java ) 본문

코딩 문제/LeetCode

LeetCode 1704 - Determine if String Halves Are Alike ( Java )

besforyou999 2021. 11. 19. 20:19

 

안녕하세요 besforyou입니다

 

이번 글은 LeetCode 1704 - Determine if String Halves are Alike 문제 풀이입니다

 


문제 해설

 

길이가 짝수인 문자열 s가 주어집니다. 이 문자열을 길이가 같은 두 개의 문자열을 나누고 첫 번째 반쪽을 a, 두 번째 반쪽을 b라고합니다.

 

문자열 a, b가 각각 가지고 있는 vowels ( 'a', 'e', 'i', 'o', 'u', 'A', 'E, 'I', 'O', 'U' ) 문자의 개수가 동일하다면 alike 하다고 합니다.

문자열 s에는 소문자, 대문자 모두 있다는것을 기억하세요.

 

문자열 a, b가 alike하면 true, 아니면 false를 반환하세요.

 


문제 풀이

 

집합 자료구조를 생성하고 vowels 문자를 모두 저장합니다.

 

문자열 s를 substring 메소드를 이용하여 문자열 a와 b로 나누고 각 문자열이 가지고 있는 vowel 문자의 개수를 셉니다.

 

vowel 문자 개수가 동일하면 true, 다르면 false를 반환합니다.

 


코드

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
31
32
33
class Solution {
        public boolean halvesAreAlike(String s) {
            HashSet<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 len = s.length();
            String a = s.substring(0, len/2);
            String b = s.substring(len/2, len);
 
            int a_vowel_num = 0;
            int b_vowel_num = 0;
 
            for (Character c : a.toCharArray()) {
                if (vowels.contains(c)) a_vowel_num += 1;
            }
 
            for (Character c : b.toCharArray()) {
                if (vowels.contains(c)) b_vowel_num += 1;
            }
 
            if (a_vowel_num == b_vowel_num) return true;
            return false;
        }
    }
cs

 


결과