diff --git a/app/src/main/java/de/jrpie/android/launcher/util/Algorithms.kt b/app/src/main/java/de/jrpie/android/launcher/util/Algorithms.kt index a75d08d..6e7151c 100644 --- a/app/src/main/java/de/jrpie/android/launcher/util/Algorithms.kt +++ b/app/src/main/java/de/jrpie/android/launcher/util/Algorithms.kt @@ -23,13 +23,17 @@ fun isSubsequent(text: String, search: String): Boolean { * as often as it occurs in `search`. */ fun countOccurrences(text: String, search: String): Int { - val foundCharacters = mutableListOf() - var mutText = text + val frequencies = mutableMapOf() + for (char in text) { + frequencies[char] = frequencies.getOrElse(char) { 0 } + 1 + } + var result = 0 for (char in search) { - if (mutText.contains(char)) { - foundCharacters.add(char) - mutText = mutText.replaceFirst(char.toString(), "") + val charFrequency = frequencies[char] ?: 0 + if (charFrequency > 0) { + result++ + frequencies[char] = charFrequency - 1 } } - return foundCharacters.size + return result }