mostFrequent method

String? mostFrequent({
  1. bool ignoreSpaces = false,
})

Finds the most frequent character in the String.

Example 1

String foo = 'Hello World';
String mostFrequent = foo.mostFrequent; // returns 'l'

Implementation

String? mostFrequent({bool ignoreSpaces = false}) {
  if (this.isBlank) {
    return this;
  }
  if (ignoreSpaces) {
    return this!.replaceAll(' ', '').mostFrequent();
  }
  var occurrences = <String, int>{};
  var letters = this!.split('')..sort();
  var checkingLetter = letters[0];
  var count = 0;

  for (var i = 0, len = letters.length; i < len; i++) {
    if (letters[i] == checkingLetter) {
      count++;
      if (i == len - 1) {
        occurrences[checkingLetter] = count;
      }
    } else {
      occurrences[checkingLetter] = count;
      checkingLetter = letters[i];
      count = 1;
    }
  }

  var mostFrequent = '';
  var occursCount = -1;

  occurrences.forEach((character, occurs) {
    if (occurs > occursCount) {
      mostFrequent = character;
      occursCount = occurs;
    }
  });

  return mostFrequent;
}