[LeetCode][JAVA] 1704. Determine if String Halves Are Alike

이호준·2024년 1월 12일
0

LeetCode

목록 보기
6/11
post-thumbnail

문제링크: 1704. Determine if String Halves Are Alike


문제설명

문자열을 절반으로 나누었을 때 나누어진 두 문자열이 문자 "a,e,i,o,u"를 대소문자 상관없이 똑같은 개수로 가지고 있으면 참을 그렇지 않으면 거짓을 반환한다.

접근방식

대소문자가 상관없이 문자열에 들어있을 수 있으므로 문자열전체를 소문자 또는 대문자로 변환시켜주고, 반복문을 활용하여 카운트 하였다.

코드:

class Solution {
    public boolean halvesAreAlike(String s) {
        int a = 0;
        int b = 0;
        s=s.toLowerCase();
        int half = s.length()/2;
        
        for(int i=0; i<half; i++){
            if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u') a++;
            if(s.charAt(half+i)=='a'||s.charAt(half+i)=='e'||s.charAt(half+i)=='i'||s.charAt(half+i)=='o'||s.charAt(half+i)=='u') b++;
        }
        return a==b;
    }
}

개선

String객체의 indexOf()는 매개변수로 입력되는 문자의 index정보를 반환하며 만약 문자열에 속해있지 않으면 -1을 반환한다. 이를 활용해서 코드를 짜면 더 깔끔하게 함수를 구성할 수 있다.

코드:

class Solution {
    public boolean halvesAreAlike(String s) {
        int a = 0;
        int b = 0;
        int half = s.length()/2;
        for(int i=0; i<half; i++){
            if("aeiouAEIOU".indexOf(s.charAt(i)) != -1) a++;
            if("aeiouAEIOU".indexOf(s.charAt(half+i)) != -1) b++;
        }
        return a==b;
    }
}
profile
나아가는 중입니다.

0개의 댓글