Сейчас работаем

Сумма уникальных цифр в строке 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 в закрепленном файле выше.

Похожие работы
Тип Название Рейтинг Категория Стоимость
Исходник Сумма квадратов натуральных чисел из диапазона [ a , b ] на C# 8 .NET (C#) бесплатно
Лабораторная Удаление строк и столбцов в матрице Delphi 0 Pascal/Delphi бесплатно
Лабораторная «Работа со строками.» Delphi 9 Pascal/Delphi бесплатно
Другие работы автора
Тип Название Рейтинг Категория Стоимость
Курсовая C++ cловесный эквивалент числа 18 C/C++ бесплатно
Курсовая MP3 плеер на C# 24 .NET (C#) 2 500,00
Курсовая Актуальные проблемы подростковой субкультуры 8 Теория игр 7,00
Комментарии (0)

dmytro

/ /

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

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

Только зарегистрированые пользователи имеют возможность комментировать работы
Сумма уникальных цифр в строке C#
Нахождение суммы уникальных чисел в заданной строке различными путями (используя и не используя LINQ)
Категория: Образование
Стоимость: Бесплатно