Counting Duplicates, CodeWars Kata
Count the number of Duplicates
Write a function that will return the count of distinct case-insensitive alphabetic characters and numeric digits that occur more than once in the input string. The input string can be assumed to contain only alphabets (both uppercase and lowercase) and numeric digits.
Example
"abcde" -> 0 `# no characters repeats more than once`
"aabbcde" -> 2 `# 'a' and 'b'`
"aabBcde" -> 2 `# 'a' occurs twice and 'b' twice (`b` and `B`)`
"indivisibility" -> 1 `# 'i' occurs six times`
"Indivisibilities" -> 2 `# 'i' occurs seven times and 's' occurs twice`
"aA11" -> 2 `# 'a' and '1'`
"ABBA" -> 2 `# 'A' and 'B' each occur twice`
주어진 문자열에서 대소문자 구분 없이 한 글자가 두 번 이상 나오는 글자의 수를 구하는 문제입니다. aA11
은 a
와 A
가 중복이고 11
이 중복이기 때문에 답은 2가 됩니다.
My Solution
저는 HashMap
을 이용해서 문제를 풀었습니다. 우선 주어진 문자열을 대소문자 구분 없이 처리하기 위해 toLowerCase()
로 처리했고요. 한 글자씩 잘라 글자를 키로 사용했습니다. 이후 출현하는 빈도를 계산해 빈도가 1을 초과하는 케이스만 카운팅 했습니다.
package com.codewars;
import java.util.HashMap;
public class CountingDuplicates {
public static int duplicateCount(String text) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < text.length(); i++) {
map.put(text.toLowerCase().charAt(i), map.getOrDefault(text.toLowerCase().charAt(i), 0).intValue() + 1);
}
return (int) map.entrySet().stream().filter(p -> p.getValue().intValue() > 1).count();
}
}
Best Practice
BP는 텍스트를 한 글자씩 잘라서 남은 문자열 중에 해당 글자가 또 들어있는지 체크합니다. 그런 후에 남은 문자열에서 비교한 문자열을 모두 삭제하고 다시 한글자씩 잘라 비교하는 식의 반복문을 작성했습니다.
public class CountingDuplicates {
public static int duplicateCount(String text) {
int ans = 0;
text = text.toLowerCase();
while (text.length() > 0) {
String firstLetter = text.substring(0,1);
text = text.substring(1);
if (text.contains(firstLetter)) ans ++;
text = text.replace(firstLetter, "");
}
return ans;
}
}
728x90
'IT Contents > 프로그래밍 팁' 카테고리의 다른 글
Weight for weight, CodeWars Kata 자바 솔루션 (0) | 2021.04.12 |
---|---|
Tribonacci Sequence, CodeWars Kata 자바 솔루션 (0) | 2021.04.10 |
Convert string to camel case, CodeWars Kata 자바 솔루션 (0) | 2021.04.07 |
Number of trailing zeros of N!, CodeWars Kata 자바 솔루션 (0) | 2021.04.06 |
Human Readable Time, CodeWars Kata 자바 솔루션 (0) | 2021.04.05 |
최근댓글