Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2017, 12:37   #1
Topfifer
 
Регистрация: 20.12.2017
Сообщений: 6
По умолчанию В заданной строке посчитать количество разных символов,входящих в эту строку

В заданной строке посчитать количество разных символов,входящих в эту строку
Topfifer вне форума Ответить с цитированием
Старый 20.12.2017, 12:38   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Topfifer, обращайтесь e-mail: informatik101@mail.ru vk.com/alexcoder1
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 20.12.2017, 13:28   #3
JIeIIIa
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 54
По умолчанию

Если еще актуально, пишите: stealth(собака)bigmir.net
Сразу указывайте на когда нужна работа и предполагаемый бюджет.
JIeIIIa вне форума Ответить с цитированием
Старый 20.12.2017, 13:40   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Щас ТС скажет, что на языке Brainfuck ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.12.2017, 15:02   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

есть на шарпе быстрее решение?
Код:
public static void Main(string[] args)
        {
           string line = "Rextester.Program.Main is the entry point for your code. Don't change it.";
           List<char> lst = new List<char>();
           for(int i=0;i<line.Length;i++)
           {
               if(lst.IndexOf(line[i])==-1) lst.Add(line[i]);
           }
           lst.Sort();
           foreach (char cr in lst)
           {
               string helpLine = line.Replace(cr.ToString(), "");
               Console.WriteLine("{0}:\t{1}",cr,line.Length-helpLine.Length);
           }
        }
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.12.2017, 11:34   #6
Thread
 
Аватар для Thread
 
Регистрация: 08.06.2011
Сообщений: 4
По умолчанию

Aleksandr H.

есть. табличный способ быстрее должен работать чем со списком
учитывая что у Вас поиск и замена.

выделить битовый массив BitArray на 256, проход по буквам строки, выставить флаги, потом подсчет

Последний раз редактировалось Thread; 21.12.2017 в 11:38.
Thread вне форума Ответить с цитированием
Старый 21.12.2017, 11:39   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Thread
Такой вариант рассматривал, только почему-то посчитал что не все символы из строки будут иметь ASCII-код
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.12.2017, 12:20   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

HashSet/Dictionary универсальнее и должно быть намного быстрее .IndexOf, особенно если много разных символов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.12.2017, 13:06   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
HashSet/Dictionary универсальнее
Вариант со словарем
Код:
public static void Main(string[] args)
        {
           string line = "Rextester.Program.Main is the entry point for your code. Don't change it.";
           Dictionary<string, int> Letters = new Dictionary<string, int>();
           for(int i=0;i<line.Length;i++)
           {
               if(Letters.ContainsKey(line[i].ToString())) Letters[line[i].ToString()] += 1;
               else Letters.Add(line[i].ToString(),1);
           }
           foreach (KeyValuePair<string,int> keyValue in Letters)
               Console.WriteLine(keyValue.Key + " - " + keyValue.Value);
        }
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler: Создать и отладить программу, которая в заданной строке Str db 'задание' подсчитывает количество символов 'а' и выводит полученную величину на экран Zhan1234 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 28.04.2017 11:33
Функцию, которая принимает в качестве параметра строку и символ и вычисляет количество таких символов в строке (Delphi) Loqwer78rus Помощь студентам 10 06.05.2014 10:52
азаработать программу Подсчета числа символов указанного типа в любой заданной строке символов . slava5170 Общие вопросы C/C++ 4 03.11.2013 02:18
Посчитать количество таких символов в строке HSR Общие вопросы Delphi 4 19.11.2012 14:23
Ввести с клавиатуры строку. Посчитать количество слов в строке. Определить, что является разделителем слов. Вывести рез-ть на экра Газимов Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 02.03.2012 15:58