hashMap日常暴力...
class Solution {
public int countCharacters(String[] words, String chars) {
char[] ch = chars.toCharArray();
if (ch.length == 0) {
return 0;
}
Map<Character, Integer> map = new HashMap<>();
for (char c : ch) {
if (map.get(c) == null) {
map.put(c, 1);
} else {
map.put(c, map.get(c) + 1);
}
}
int sum = 0;
for (String s : words) {
char[] temp = s.toCharArray();
Map<Character, Integer> subMap = new HashMap<>();
boolean isSuccess = true;
for (char c : temp) {
if (map.get(c) == null) {
isSuccess = false;
break;
}
if (subMap.get(c) == null) {
subMap.put(c, 1);
} else {
subMap.put(c, subMap.get(c) + 1);
}
if (map.get(c) < subMap.get(c)) {
isSuccess = false;
break;
}
}
if (isSuccess) {
sum += temp.length;
}
}
return sum;
}
}
别人的 int[26]
class Solution {
private int[] dictionary = new int[26];
public int countCharacters(String[] words, String chars) {
for (int i = 0; i < chars.length(); i++) {
dictionary[chars.charAt(i) - 'a'] += 1;
}
int sum = 0;
for (String s : words) {
sum += remember(s);
}
return sum;
}
private int remember(String s) {
int[] temp = new int[26];
for (int i = 0; i < s.length(); i++) {
int index = s.charAt(i) - 'a';
if (temp[index] == dictionary[index]) { //相等说明字典不够了(temp应该要比dictionary小)
return 0;
}
temp[index] += 1;
}
return s.length();
}
}