길이가 짝수인 문자열이 주어졌을 때, 절반을 나눠서 소문자 모음과 대문자 모음의 갯수를 세준다. 만일 그 갯수가 같다면 true를 아니면 flase를 반환한다.
String a = s.substring(0, s.length()/2);
String b = s.substring(s.length()/2);
HashSet<Character> hashset = new HashSet<>();
hashset.add('a');
hashset.add('e');
hashset.add('i');
hashset.add('o');
hashset.add('u');
hashset.add('A');
hashset.add('E');
hashset.add('I');
hashset.add('O');
hashset.add('U');
for(int i=0; i<a.length(); i++){
if(hashset.contains(a.charAt(i))){
countA++;
}
if(hashset.contains(b.charAt(i))){
countB++;
}
}
return countA == countB;
class Solution {
public boolean halvesAreAlike(String s) {
String a = s.substring(0, s.length()/2);
String b = s.substring(s.length()/2);
int countA = 0;
int countB = 0;
HashSet<Character> hashset = new HashSet<>();
hashset.add('a');
hashset.add('e');
hashset.add('i');
hashset.add('o');
hashset.add('u');
hashset.add('A');
hashset.add('E');
hashset.add('I');
hashset.add('O');
hashset.add('U');
for(int i=0; i<a.length(); i++){
if(hashset.contains(a.charAt(i))){
countA++;
}
if(hashset.contains(b.charAt(i))){
countB++;
}
}
return countA == countB;
}
}
HashSet을 사용하지 않는 방법도 있다. 바로 String의 indexOf 기능을 사용하는 것. 찾고자 하는 문자를 String으로 만든 해당 문자열에 a문자열의 문자가 존재하면 즉, view.indexOf(c)의 값이 -1이 아니라면 숫자를 ++해준다. 여기서 -1의 의미는 view에 문자 c가 존재하지 않는다는 걸 의미한다.
https://leetcode.com/problems/determine-if-string-halves-are-alike/description/