كيف يمكنني إجراء تحليل التردد على سلسلة دون استخدام مفتاح
-
23-09-2019 - |
سؤال
أنا أعمل مشروع مدرسي لتنفيذ رمز هوفمان على النص. الجزء الأول بالطبع يتطلب تحليل التردد على النص. هل هناك طريقة أفضل بصرف النظر عن مفتاح عملاق ومجموعة من العدادات للقيام بذلك؟
بمعنى آخر:
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;
}
لا تنتمي إلى StackOverflow