كيف يمكنني إجراء تحليل التردد على سلسلة دون استخدام مفتاح

StackOverflow https://stackoverflow.com/questions/2350056

سؤال

أنا أعمل مشروع مدرسي لتنفيذ رمز هوفمان على النص. الجزء الأول بالطبع يتطلب تحليل التردد على النص. هل هناك طريقة أفضل بصرف النظر عن مفتاح عملاق ومجموعة من العدادات للقيام بذلك؟

بمعنى آخر:

int[] counters

for(int i = 0; i <inString.length(); i++)
{
switch(inString[i])
    case 'A':
    counters[0]++;
.
.
. 

أود أن أفعل كل الشخصيات الفنية الرقمية وعلامات الترقيم. أنا أستخدم C ++.

هل كانت مفيدة؟

المحلول

لما لا:

int counters[256] = {0};
for(int i = 0; i <inString.length(); i++)
    counters[inString[i]]++;
}


std::cout << "Count occurences of \'a\'" << counters['a'] << std::endl;

نصائح أخرى

يمكنك استخدام صفيف مفهرس بواسطة الحرف:

int counters[256];
for (int i = 0; i < inString.length(); i++) {
    counters[(unsigned char)inString[i]]++;
}

سترغب أيضًا في تهيئة الخاص بك counters صفيف إلى الصفر ، بالطبع.

يبدو أن استخدام الخريطة قابلة للتطبيق تمامًا:

map<char,int> chcount;
for(int i=0; i<inString.length(); i++){
  t=inString[i];
  chcount[i]? chcount[i]++ : chcount[i]=1;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top