C# решение задачи со строками

Целое число английскими словами

https://t.me/data_analysis_ml

Сложность задачи: Высокая

Условие задачи:

Преобразуйте неотрицательное целое число num в его буквенное представление английскими словами.

Пример:

Ввод: num = 123

Вывод: “One Hundred Twenty Three”

Ввод: num = 12345

Вывод: “Twelve Thousand Three Hundred Forty Five”

Решение с использованием рекурсии:

public class Solution {
public Dictionary<int, string> dict = new Dictionary<int, string>();
    public string NumberToWords(int num) {
        
        if(num == 0) return "Zero";
        InitDict();

        var r = Convert(num);
        return r.Substring(0, r.Length - 1);
        
        
    }

    public string Convert(int num) {

        foreach (var key in dict.Keys)
        {
            if (num >= key)
            {
                var res = dict[key] + " " + Convert(num % key);
                if(num >= 100) res = Convert(num / key) + res;
                return res;
            }
        }

        return "";

    }



    public void InitDict() {
        dict.Add(1000000000, "Billion");
        dict.Add(1000000, "Million");
        dict.Add(1000, "Thousand");
        dict.Add(100, "Hundred");
        dict.Add(90, "Ninety");
        dict.Add(80, "Eighty");
        dict.Add(70, "Seventy");
        dict.Add(60, "Sixty");
        dict.Add(50, "Fifty");
        dict.Add(40, "Forty");
        dict.Add(30, "Thirty");
        dict.Add(20, "Twenty");
        dict.Add(19, "Nineteen");
        dict.Add(18, "Eighteen");
        dict.Add(17, "Seventeen");
        dict.Add(16, "Sixteen");
        dict.Add(15, "Fifteen");
        dict.Add(14, "Fourteen");
        dict.Add(13, "Thirteen");
        dict.Add(12, "Twelve");
        dict.Add(11, "Eleven");
        dict.Add(10, "Ten");
        dict.Add(9, "Nine");
        dict.Add(8, "Eight");
        dict.Add(7, "Seven");
        dict.Add(6, "Six");
        dict.Add(5, "Five");
        dict.Add(4, "Four");
        dict.Add(3, "Three");
        dict.Add(2, "Two");
        dict.Add(1, "One");

    }
}
+1
2
+1
1
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *