Как мы можем хранить частоту алфавитов в строке? - PullRequest
0 голосов
/ 07 марта 2011

Как мы можем хранить частоту алфавитов в строке, используя минимально возможную память ..

Я думаю, что битовый массив или использование битовых манипуляций, это не может быть достигнуто, так как нам нужно хранить частоту, и не тольковозникновение алфавита (true или false) ...

Пожалуйста, дайте мне знать, если для этой проблемы существует какая-либо другая структура данных.

также нам нужно найти алфавиты, которые имеютмаксимальная частота (aplhabets с той же максимальной частотой) должны быть напечатаны.Пожалуйста, мне нужен эффективный алогритм ...

Ответы [ 4 ]

3 голосов
/ 07 марта 2011

Я думаю Код Хаффмана - это то, что вы хотите, но объясните свою проблему, чтобы лучше ее понять, есть и другие способы, но вы должны объяснить свою проблему (по крайней мере, я один из людей нужно больше объяснений).

1 голос
/ 12 января 2012

/ * Для короткой строки, такой как "abaz", Hashmap типа (a: 2, b: 1, z: 1) будет короче, чем целый алфавит * /

main()

{

  int count,i,j;
  char str[50];

  printf("Enter string : ");
  gets(str);

  for(i=0;i<=strlen(str)-1;i++)
  {
          count=1;
          if(str[i]==' ')
             continue;
          for(j=i+1;j<=strlen(str)-1;j++)
          {   
                 if(str[i]==str[j])
                 {
                        str[j]=' ';
                        count++;
                 }
          }
          printf("%c : %d \n",str[i],count);
  }                
  getch();
}                        
0 голосов
/ 15 июня 2011

Создать HashMap, в котором символы отображаются на частоту.Также сохраняйте максимальное количество и увеличивайте его при необходимости.В конце у вас есть все частоты и максимальный счет.Теперь выполните итерации по хэш-карте и выберите символьные ключи, сопоставленные со значением, равным максимальному количеству.

Хранение = O (n) Извлечение всех символов с максимальной частотой = O (n)

Итак, оба вместе выполняются за линейное время.

0 голосов
/ 08 марта 2011

Для короткой строки, такой как «abaz», Hashmap типа (a: 2, b: 1, z: 1) будет короче, чем весь алфавит.

Это только для ascii az или считаются символы UTF-8?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...