wordFrequencyRanking function

List<String> wordFrequencyRanking(
  1. String text
)

Word Frequency Ranking: returns a list of words sorted by frequency (desc), then lexicographically.

Implementation

List<String> wordFrequencyRanking(String text) {
  final freq = <String, int>{};
  for (final word in text.split(RegExp(r'\W+'))) {
    if (word.isEmpty) continue;
    freq[word] = (freq[word] ?? 0) + 1;
  }
  final words = freq.keys.toList();
  words.sort(
    (a, b) =>
        freq[b] != freq[a] ? freq[b]!.compareTo(freq[a]!) : a.compareTo(b),
  );
  return words;
}