Форум программистов, компьютерный форум CyberForum.ru

Подсчет вхождений символа в строку - C++

Восстановить пароль Регистрация
 
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
11.11.2012, 18:42     Подсчет вхождений символа в строку #1
Для каждого символа латинского алфавита найдите число его вхождений в строку (можно придумать алгоритм, работающий за линейное время от длины строки).
Пока мыслей нет. Непонятно с чем сравнивать. По ASCII коду понятно, но как придумать линейный алгоритм?
я понимаю, что результатом будет целочисленный массив длины 26. Но еще пока плохо понимаю как это все работает. Был бы это паскаль - написал бы в лет. а здесь еще не знаю всех особенностей языка. Подскажите с чего начать. Если можно с комментариями типа "что происходит здесь"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,283
Завершенные тесты: 1
12.11.2012, 13:12     Подсчет вхождений символа в строку #2
C++
1
2
3
4
5
6
7
8
9
10
11
int nums[26];
char str[256];
for(int i=0;i<26;i++)nums[i]=0;
for(int i=0;str[i]!=0;i++)
{
 if(isalpha(str[i]))
 {
  int a=str[i]&0xdf-'A';
  nums[a]++;
 }
}
Это набросок! Не проверял!
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
12.11.2012, 18:16  [ТС]     Подсчет вхождений символа в строку #3
все понятно благодарю. Единственное, это не понял что такое
C++
1
int a=str[i]&0xdf-'A';
конкретно
C++
1
&0xdf-'A';
Объясни, если не сложно пожалуйста
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,283
Завершенные тесты: 1
14.11.2012, 20:33     Подсчет вхождений символа в строку #4
&0xdf - преобразование буквы к верхнему регистру
&0xdf-'A' получить индекс буквы в алфавите.
Букве А будет соответствовать 0
В - 1
С - 2
...
Yandex
Объявления
14.11.2012, 20:33     Подсчет вхождений символа в строку
Ответ Создать тему
Опции темы

Текущее время: 08:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru