- List 사용, subStr 로 잘라 비교해서 count 증가
- 리턴
public class JewelsAndStones {
public static void main(String[] args) {
String J = "aA";
String S = "aAAbbbb";
int answer = solve(J,S);
System.out.println(answer);
}
/**
* 각 문자는 돌의 종류를 나타낸다. 각 돌에서 보석이 몇개 있는지 알려달라.
* @param j
* @param s
* @return
*/
private static int solve(String j, String s) {
//List 를 이용해서 문자열을 잘라 놓고 비교한다.
if(s.length() == 0) {
return 0;
}
int answer = 0;
List<String> list = Arrays.asList(j.split(""));
for(int i=0; i<s.length(); i++) {
if(list.contains(s.substring(i, i+1))) {
answer += 1;
}
}
return answer;
}
}
- HashSet 은 순서가 없고, 중복되지않는 자료구조, 순서는 중요하지 않으니 Set을 씀
- 향상된 for 문으로 쉽게 Char 값을 빼낼 수 있음!
- 값을 비교해서 count 증가
- 리턴
public class JewelsAndStonesTeaching {
public static void main(String[] args) {
String J = "aA";
String S = "aAAbbbb";
int answer = solve(J,S);
System.out.println(answer);
}
/**
* 보석은 대소문자를 구분해서 가져야한다.
* 스톤에서 보석을 비교
*
* HashSet == 중복을 허용하지 않고 순서가 없는 자료구조
* @param j
* @param s
* @return
*/
private static int solve(String jew, String stone) {
Set<Character> set = new HashSet<Character>();
//향상된 for문으로 뽑아낸다
for(char j : jew.toCharArray()) {
set.add(j); // 보석 문자 a , A
}
int count = 0;
for(char s : stone.toCharArray()) {
if(set.contains(s)) {
count ++;
};
}
return count;
}
}