Выполнение commonCharacterCount из CodeSignal. Конечно, вы хотите узнать, сколько символов является общим.
Вот пример:
Для s1 = "aabcc"
и s2 = "adcaa"
, вывод должен быть commonCharacterCount(s1, s2)
= 3.
строки имеют 3 общих символа - 2 "a" s и 1 "c".
При построении карты с количеством символов для каждого. Затем я хочу проверить каждое значение на карте, и проверить их обоих. К ответу я добавлю минимальное количество символов в обеих Картах. Например, s1 = "aabcc"
&& s2 = "adcaa"
, mapS1['a'] = 2
&& mapS2['a'] = 3
, поэтому count += min(2,3)
= 2
Это моя идея, но, как я уже упоминал, возникли проблемы с итерацией обеих карт.
Первый раз, используя значение карты в качестве счетного значения. Не могу точно сказать, является ли это лучшим способом увеличить значение на карте, поэтому я думаю, что мне понадобится и помощь с этим.
Заранее спасибо:)
static int res(String s1, String s2) {
HashMap<Character, Integer> mapS1 = new HashMap<>();
HashMap<Character, Integer> mapS2 = new HashMap<>();
int count = 0;
for(int i = 0; i < s1.length(); i++)
mapS1.put(s1.charAt(i), mapS1.getOrDefault(s2.charAt(i), 0) + 1);
for(int i = 0; i < s2.length(); i++)
mapS1.put(s2.charAt(i), mapS2.getOrDefault(s2.charAt(i), 0) + 1);
for(Map.Entry<Character, Integer> entry : mapS1.entrySet()) {
int a = mapS1.get(entry.getKey());
int b = mapS2.get(entry.getKey());
if(a > 0 && b >= 0) count += Math.min(a, b);
}
return count;
}
ИСПРАВЛЕННАЯ И РАБОЧАЯ ВЕРСИЯ: Спасибо всем!
static int res(String s1, String s2) {
HashMap<Character, Integer> mapS1 = new HashMap<>();
HashMap<Character, Integer> mapS2 = new HashMap<>();
int count = 0;
for(int i = 0; i < s1.length(); i++)
mapS1.put(s1.charAt(i), mapS1.getOrDefault(s1.charAt(i), 0) + 1);
for(int i = 0; i < s2.length(); i++)
mapS2.put(s2.charAt(i), mapS2.getOrDefault(s2.charAt(i), 0) + 1);
for(Map.Entry<Character, Integer> entry : mapS1.entrySet()) {
int a = mapS1.getOrDefault(entry.getKey(), 0);
int b = mapS2.getOrDefault(entry.getKey(), 0);
System.out.println(a + " " + b);
count += Math.min(a, b);
}
return count;
}
```