-
Notifications
You must be signed in to change notification settings - Fork 0
/
UnderCoverCoder.java
55 lines (48 loc) · 1.46 KB
/
UnderCoverCoder.java
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.HashMap;
public class UnderCoverCoder {
//-- intakes a string or String[], returns map of character to # of times it appears
public HashMap<Character, Integer> mapper(String... inputter){
HashMap<Character, Integer> numOfLetters = new HashMap<Character, Integer>();
for (String s : inputter){
s = s.toLowerCase();
char[] letterArray = s.toCharArray();
for (char c : letterArray){
int previousCount = numOfLetters.get(c) == null? 0:numOfLetters.get(c);
numOfLetters.put(c, ++previousCount);
}
}
return numOfLetters;
}
public int totalNotes(String[] clips, String[] notes) {
//-- create a "bank" of all available letters
HashMap<Character, Integer> bank = mapper(clips);
int count = 0;
for (String s : notes){
boolean missingLetter = false;
//-- create new map of characters->integers to compare against bank
HashMap<Character, Integer> temp = mapper(s);
//-- for every character in the note being compared
for (char c : temp.keySet()){
//-- spaces dont count
if (c == ' '){
continue;
}
//-- how many times does char c appear in the bank?
int bankCount = bank.get(c) ==null? 0 : bank.get(c);
//-- if this is less than required for message, break, otherwise: continue
if (temp.get(c)<=bankCount){
continue;
}
else{
missingLetter = true;
break;
}
}
//-- keep the counter
if (!missingLetter){
count++;
}
}
return count;
}
}