

문제링크: 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;
}
}