На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Сумма уникальных цифр в строке C#

Задача

Найти сумму всех уникальных цифр в строке

Решение

Данную задачу можно решить двумя путями: используя HashSet<int> плюс циклы и используя LINQ. В этой статье я хочу показать отличие этих двух подходов и сравнить их по производительности.

Используем LINQ

int sum = (int)input                    	// коллекция chars
	.Where(x => char.IsNumber(x))           // находим все char, которые являются числом
	.Select(x => char.GetNumericValue(x))   // конвертируем char в число
	.Distinct()                             // берем только уникальные значения
	.Sum();                                 // считаем сумму

Используем HashSet и циклы

HashSet<int> numbers = new HashSet<int>();
foreach (char c in input)                
	if (char.IsNumber(c))                    
		numbers.Add((int)char.GetNumericValue(c));                                    
int sum = 0;
foreach (int n in numbers)                
	sum += n;

Основным преимущество LINQ является его краткость и расширяемость. Давайте проведем нагрузочный тест и сравним результаты. На вход подаем строку из 10000 символов и проводим 10000 итераций (скриншот выше). Получаем следующие результаты

  • 00:00:01.7066307 (LINQ)
  • 00:00:01.3255282 (HashSet)

Мы видем, что LINQ проседает на 23%. Изячность или производительность!? - решение принимать вам!

Исходный код на Visual Studio 2015 в закрепленном файле выше.

Комментарии (0)

dmytro

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Похожие работы
Тип Название Рейтинг Категория Стоимость
Исходник Сумма квадратов натуральных чисел из диапазона [ a , b ] на C# 8 .NET (C#) бесплатно
Лабораторная Удаление строк и столбцов в матрице Delphi 0 Pascal/Delphi бесплатно
Курсовая Игра Сапер C# 22 .NET (C#) 1 500,00
Лабораторная Шифратор и дешифратор Цезаря C# 16 .NET (C#) 1 500,00
Лабораторная Калькулятор C# Windows Forms 0 .NET (C#) 99,00
Другие работы автора
Тип Название Рейтинг Категория Стоимость
Курсовая C++ cловесный эквивалент числа 18 C/C++ бесплатно
Курсовая MP3 плеер на C# 24 .NET (C#) 2 500,00
Курсовая Актуальные проблемы подростковой субкультуры 8 Теория игр 7,00
Курсовая Визуализатор графиков на WinApi 11 C/C++ 500,00
Статья Генерация случайных чисел на C# или класс Random под микроскопом 33 .NET (C#) 500,00
Новые работы
Тип Название Рейтинг Категория Стоимость
Диплом Разработка Telegram-бота для колледжа АГУ (Python) new 0 Python 10 000,00
Исходник Учёт товаров (Python, Tkinter, Sqlite) new 0 Python 3 000,00
Курсовая АИС "Авиакасса" (C#, WPF, WinForms, SQLite, SQL Server, Access) new 0 .NET (C#) 5 500,00
Курсовая Курсовая работа разработка мобильных приложений "FTP клиент для Android" new 0 Сетевые протоколы 6 500,00
Исходник Транспонирование матрицы new 0 .NET (C#) 150,00
Сумма уникальных цифр в строке C#
Нахождение суммы уникальных чисел в заданной строке различными путями (используя и не используя LINQ)
Категория: Образование
Стоимость: Бесплатно