بقلم يوفراج شاندرا
بريد إلكتروني

ما هو الحرف الذي يظهر أكبر عدد من المرات في هذه السلسلة؟ بناء برنامج لمعرفة ذلك من أجلك!

السلاسل هي موضوع مهم جدا في مقابلات البرمجة. من الحكمة ممارسة بعض مشكلات البرمجة التي تركز على السلاسل قبل المقابلات. في هذه المقالة ، ستتعلم كيفية العثور على الحرف الأكثر تكرارا في سلسلة.

أمثلة لفهم المشكلة

مثال 1: دع السلسلة المحددة تكون "Makeuseof". يظهر الحرف "e" مرتين في السلسلة المحددة وكل الأحرف الأخرى تحدث مرة واحدة فقط. وبالتالي ، فإن الحرف "e" له أعلى تردد في السلسلة المحددة.

مثال 2: دع الخيط المعطى يكون "ترى الجبن". يتكرر الحرف "e" 6 مرات في السلسلة المحددة وكل الأحرف الأخرى تحدث أقل من 6 مرات. وبالتالي ، فإن الحرف "e" له أعلى تردد في السلسلة المحددة.

نهج للعثور على الحرف الأكثر تكرارا في سلسلة

تقنية التجزئة هي الطريقة الأكثر فاعلية للعثور على الحرف الذي يحتوي على أعلى تردد في سلسلة. في هذه التقنية ، يتم اجتياز السلسلة ويتم تجزئة كل حرف من أحرف السلسلة إلى مصفوفة من أحرف ASCII.

دع سلسلة الإدخال تكون "Makeuseof" ، يتم تجزئة كل حرف من هذه السلسلة على النحو التالي:

instagram viewer

التردد ['M'] = 1

التردد ['أ] = 1

التردد ['k'] = 1

التردد ['e'] = 2

التردد ['u'] = 1

التردد ['] = 1

التردد ['o'] = 1

التردد ['f'] = 1

يتم إرجاع فهرس القيمة القصوى في صفيف التردد. هنا 2 هي أعلى قيمة ، لذلك يتم إرجاع "e".

برنامج C ++ للعثور على الشخصية بأعلى تردد

يوجد أدناه برنامج C ++ للعثور على الحرف بأعلى تردد في سلسلة:

متعلق ب: كيفية حساب تكرارات حرف معين في سلسلة

// C ++ برنامج للعثور على الحرف
// لها أعلى تردد في سلسلة
#تضمن
#تضمن
#define ASCII_SIZE 256
استخدام اسم للمحطة؛
char maxFrequencyChar (سلسلة سلسلة)
{
// صفيف لتخزين تردد كل حرف
// تهيئة تردد كل حرف كـ 0
تردد int [ASCII_SIZE] = {0} ،
// البحث عن طول سلسلة الإدخال
int lenOfStr = str.length () ،
// تهيئة متغير maxFrequency
int maxFrequency = -1 ؛
// تهيئة متغير maxFrequencyChar
شار maxFrequencyChar ؛
// عبور وصيانة
// تكرار كل حرف
لـ (int i = 0 ؛ أنا {
التردد [str [i]] ++ ؛
إذا (maxFrequency {
maxFrequency = تردد [str [i]] ،
maxFrequencyChar = str [i] ،
}
}
إرجاع maxFrequencyChar ؛
}
// كود السائق
انت مين()
{
string str1 = "أي ساحرة هي؟"؛
cout << "str1:" << str1 << endl؛
cout << "الحرف الأعلى ترددًا هو:" << maxFrequencyChar (str1) << endl؛
سلسلة str2 = "ألقى ثلاث رميات حرة"؛
cout << "str2:" << str2 << endl؛
cout << "الحرف الأعلى ترددًا هو:" << maxFrequencyChar (str2) << endl؛
string str3 = "Eddie حررها"؛
cout << "str3:" << str3 << endl؛
cout << "الحرف الأعلى ترددًا هو:" << maxFrequencyChar (str3) << endl؛
سلسلة str4 = "Makeuseof" ؛
cout << "str4:" << str4 << endl؛
cout << "الحرف الأعلى ترددًا هو:" << maxFrequencyChar (str4) << endl؛
سلسلة str5 = "ترى الجبن"؛
cout << "str5:" << str5 << endl؛
cout << "الحرف الأعلى تردد هو:" << maxFrequencyChar (str5) << endl؛
}

انتاج:

str1: أي ساحرة هي؟
أعلى حرف تردد هو: h
str2: ألقى ثلاث رميات حرة
أعلى حرف تردد هو: e
str3: قام إدي بتحريره
أعلى حرف تردد هو: د
str4: Makeuseof
أعلى حرف تردد هو: e
str5: ترى الجبن
أعلى حرف تردد هو: e

برنامج بايثون للعثور على الشخصية بأعلى تردد

يوجد أدناه برنامج Python للعثور على الشخصية ذات التردد الأعلى في سلسلة:

متعلق ب: كيفية عكس سلسلة في C ++ و Python و JavaScript

# برنامج بايثون لايجاد الشخصية
# لها أعلى تردد في سلسلة
ASCII_SIZE = 256
def maxFrequencyChar (str):
# صفيف لتخزين تردد كل حرف
# تهيئة تردد كل حرف على أنه 0
التردد = [0] * ASCII_SIZE
# تهيئة متغير maxFrequency
maxFrequency = -1
# تهيئة متغير maxFrequencyChar
maxFrequencyChar = "
# عبور وصيانة
# تردد لكل حرف
لأني في شارع:
التردد [أمر (ط)] + = 1
لأني في شارع:
إذا كان maxFrequency maxFrequency = التردد [ord (i)]
maxFrequencyChar = أنا
إرجاع maxFrequencyChar
# كود السائق
str1 = "أي ساحرة هي؟"
طباعة ("str1:"، str1)
print ("أعلى حرف تردد هو:"، maxFrequencyChar (str1))
str2 = "ألقى ثلاث رميات حرة"
طباعة ("str2:"، str2)
print ("أعلى حرف تردد هو:" ، maxFrequencyChar (str2))
str3 = "قام إدي بتحريره"
طباعة ("str3:"، str3)
print ("أعلى حرف تردد هو:"، maxFrequencyChar (str3))
str4 = "Makeuseof"
طباعة ("str4:"، str4)
طباعة ("أعلى حرف تردد هو:" ، maxFrequencyChar (str4))
str5 = "ترى الجبن"
طباعة ("str5:"، str5)
print ("أعلى حرف تردد هو:" ، maxFrequencyChar (str5))

انتاج:

str1: أي ساحرة هي؟
أعلى حرف تردد هو: h
str2: ألقى ثلاث رميات حرة
أعلى حرف تردد هو: e
str3: قام إدي بتحريره
أعلى حرف تردد هو: د
str4: Makeuseof
أعلى حرف تردد هو: e
str5: ترى الجبن
أعلى حرف تردد هو: e

برنامج C لإيجاد الشخصية بأعلى تردد

يوجد أدناه برنامج C للعثور على الشخصية ذات التردد الأعلى في سلسلة:

متعلق ب: كيفية البحث عن أحرف العلة والحروف الساكنة والأرقام والأحرف الخاصة في سلسلة

// C برنامج للعثور على الشخصية
// لها أعلى تردد في سلسلة
#تضمن
#تضمن
#define ASCII_SIZE 256
استخدام اسم للمحطة؛
char maxFrequencyChar (char * str)
{
// صفيف لتخزين تردد كل حرف
// تهيئة تردد كل حرف كـ 0
تردد int [ASCII_SIZE] = {0} ،
// البحث عن طول سلسلة الإدخال
int lenOfStr = strlen (str) ؛
// تهيئة متغير maxFrequency
int maxFrequency = 0 ؛
// تهيئة متغير maxFrequencyChar
شار maxFrequencyChar ؛
// عبور وصيانة
// تكرار كل حرف
لـ (int i = 0 ؛ أنا {
التردد [str [i]] ++ ؛
إذا (maxFrequency {
maxFrequency = تردد [str [i]] ،
maxFrequencyChar = str [i] ،
}
}
إرجاع maxFrequencyChar ؛
}
// كود السائق
انت مين()
{
char str1 [] = "أي ساحرة هي؟"؛
printf ("str1:٪ s"، str1) ؛
printf ("أعلى حرف تردد هو:٪ c \ ⁠n" ، maxFrequencyChar (str1)) ؛
char str2 [] = "ألقى ثلاث رميات حرة"؛
printf ("str2:٪ s"، str2) ؛
printf ("أعلى حرف تردد هو:٪ c \ ⁠n" ، maxFrequencyChar (str2)) ؛
char str3 [] = "قام Eddie بتحريره"؛
printf ("str3:٪ s"، str3) ؛
printf ("أعلى حرف تردد هو:٪ c \ ⁠n" ، maxFrequencyChar (str3)) ؛
char str4 [] = "Makeuseof"؛
printf ("str4:٪ s"، str4) ؛
printf ("أعلى حرف تردد هو:٪ c \ ⁠n" ، maxFrequencyChar (str4)) ؛
char str5 [] = "ترى الجبن"؛
printf ("str1:٪ s"، str5) ؛
printf ("أعلى حرف تردد هو:٪ c \ ⁠n" ، maxFrequencyChar (str5)) ؛
}

انتاج:

str1: أي ساحرة هي؟
أعلى حرف تردد هو: h
str2: ألقى ثلاث رميات حرة
أعلى حرف تردد هو: e
str3: قام إدي بتحريره
أعلى حرف تردد هو: د
str4: Makeuseof
أعلى حرف تردد هو: e
str5: ترى الجبن
أعلى حرف تردد هو: e

برنامج JavaScript للعثور على الحرف بأعلى تردد

يوجد أدناه برنامج JavaScript للعثور على الحرف بأعلى تردد في سلسلة:

// برنامج JavaScript للعثور على الشخصية
// لها أعلى تردد في سلسلة
دع ASCII_SIZE = 256 ؛
وظيفة maxFrequencyChar (str)
{
// صفيف لتخزين تردد كل حرف
// تهيئة تردد كل حرف كـ 0
دع التردد = صفيف جديد (ASCII_SIZE) ؛
لـ (دع أنا = 0 ؛ أنا {
التردد [i] = 0 ؛
}
// البحث عن طول سلسلة الإدخال
دع lenOfStr = str.length ؛
لـ (دع أنا = 0 ؛ أنا {
التردد [str [i] .charCodeAt (0)] + = 1 ؛
}
// تهيئة متغير maxFrequency
دع maxFrequency = -1 ؛
// تهيئة متغير maxFrequencyChar
دع maxFrequencyChar = '' ؛
// عبور وصيانة
// تكرار كل حرف
لـ (دع أنا = 0 ؛ أنا {
إذا (maxFrequency {
maxFrequency = التردد [str [i] .charCodeAt (0)] ؛
maxFrequencyChar = str [i] ،
}
}
إرجاع maxFrequencyChar ؛
}
// كود السائق
دع str1 = "أي ساحرة هي؟" ؛
document.write ("str1:" + str1 + "
");
document.write ("أعلى حرف تردد هو:" + maxFrequencyChar (str1) + "
")
دع str2 = "ألقى ثلاث رميات حرة" ؛
document.write ("str2:" + str2 + "
");
document.write ("أعلى حرف تردد هو:" + maxFrequencyChar (str2) + "
")
دع str3 = "قام Eddie بتحريره" ؛
document.write ("str3:" + str3 + "
");
document.write ("أعلى حرف تردد هو:" + maxFrequencyChar (str3) + "
")
دع str4 = "Makeuseof" ؛
document.write ("str4:" + str4 + "
");
document.write ("أعلى حرف تردد هو:" + maxFrequencyChar (str4) + "
")
دع str5 = "ترى الجبن" ؛
document.write ("str5:" + str5 + "
");
document.write ("أعلى حرف تردد هو:" + maxFrequencyChar (str5) + "
")

انتاج:

str1: أي ساحرة هي؟
أعلى حرف تردد هو: h
str2: ألقى ثلاث رميات حرة
أعلى حرف تردد هو: e
str3: قام إدي بتحريره
أعلى حرف تردد هو: د
str4: Makeuseof
أعلى حرف تردد هو: e
str5: ترى الجبن
أعلى حرف تردد هو: e

تحليل تعقيد الزمان والمكان

التعقيد الزمني لـ maxFrequencyChar () الوظيفة على). تعقيد مساحة maxFrequencyChar () الوظيفة يا (1) كمساحة ثابتة (مصفوفة تجزئة). لا يعتمد على حجم سلسلة الإدخال.

يمنحك تدوين Big-O طريقة لحساب المدة التي سيستغرقها تشغيل التعليمات البرمجية الخاصة بك. إنه أحد أهم المفاهيم لتحليل الخوارزميات. إذا كنت مبرمجًا ، فيجب أن تعرف تدوين Big-O.

بريد إلكتروني
ما هو تدوين Big-O؟

يجب أن تكون شفرتك فعالة ، ولكن كيف تُظهر مدى كفاءة شيء ما؟ مع Big-O!

اقرأ التالي

مواضيع ذات صلة
  • برمجة
  • جافا سكريبت
  • بايثون
  • دروس الترميز
  • البرمجة C
عن المؤلف
يوفراج شاندرا (30 مقالة منشورة)

يوفراج طالب جامعي في علوم الكمبيوتر بجامعة دلهي بالهند. إنه متحمس لتطوير الويب Full Stack. عندما لا يكتب ، فإنه يستكشف عمق التقنيات المختلفة.

المزيد من Yuvraj Chandra

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

خطوة أخرى أيضا…!

يرجى تأكيد عنوان بريدك الإلكتروني في البريد الإلكتروني الذي أرسلناه لك للتو.

.