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

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

/ /

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

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

Только зарегистрированые пользователи имеют возможность комментировать работы
Скачать

бесплатно

Поиск уникальных чисел C#.zip
62294
Оцени работу

рейтинг

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