convertNumberToEnglishWords function

String convertNumberToEnglishWords(
  1. int number
)

Implementation

String convertNumberToEnglishWords(int number) {
  /// MODIFY CODE ONLY BELOW THIS LINE

  if (number == 0) return 'zero';

  // Lists for units, tens, and special cases
  final englishUnits = [
    'zero',
    'one',
    'two',
    'three',
    'four',
    'five',
    'six',
    'seven',
    'eight',
    'nine'
  ];
  final englishTens = [
    'ten',
    'twenty',
    'thirty',
    'forty',
    'fifty',
    'sixty',
    'seventy',
    'eighty',
    'ninety'
  ];
  final specialNumbers = {
    11: 'eleven',
    12: 'twelve',
    13: 'thirteen',
    14: 'fourteen',
    15: 'fifteen',
    16: 'sixteen',
    17: 'seventeen',
    18: 'eighteen',
    19: 'nineteen'
  };

  String result = '';

  // Handle billions
  if (number >= 1000000000) {
    int billions = number ~/ 1000000000;
    result += '${convertNumberToEnglishWords(billions)} billion';
    number %= 1000000000;
    if (number > 0) result += ' ';
  }

  // Handle millions
  if (number >= 1000000) {
    int millions = number ~/ 1000000;
    result += '${convertNumberToEnglishWords(millions)} million';
    number %= 1000000;
    if (number > 0) result += ' ';
  }

  // Handle thousands
  if (number >= 1000) {
    int thousands = number ~/ 1000;
    result += '${convertNumberToEnglishWords(thousands)} thousand';
    number %= 1000;
    if (number > 0) result += ' ';
  }

  // Handle hundreds
  if (number >= 100) {
    int hundreds = number ~/ 100;
    result += '${englishUnits[hundreds]} hundred';
    number %= 100;
    if (number > 0) result += ' ';
  }

  // Handle numbers between 10 and 19
  if (number >= 10 && number < 20) {
    result += specialNumbers[number]!;
    return result; // Early exit to avoid further processing
  }

  // Handle tens
  if (number >= 20) {
    int tens = number ~/ 10;
    result += englishTens[tens - 1];
    number %= 10;
    if (number > 0) result += '-';
  }

  // Handle units
  if (number > 0) {
    result += englishUnits[number];
  }

  return result;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}