ในปัญหานี้ เราได้รับอาร์เรย์ของอักขระทั้งหมดเป็นตัวพิมพ์เล็ก งานของเราคือ จำนวนคำนำหน้าในอาร์เรย์สูงสุด .
เราจำเป็นต้องนับการเกิดขึ้นของคำนำหน้าที่ไม่ว่างเปล่าซึ่งมีจำนวนการเกิดขึ้นสูงสุด
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
Input : string = “xyyzkxyyzk” Output : 2
แนวทางการแก้ปัญหา
ตรรกะคือการนึกภาพว่าคำนำหน้าของอาร์เรย์ต้องมีอักขระตัวแรกของสตริงเสมอและแน่นอนว่าจะต้องเกิดขึ้นซ้ำ ๆ และอักขระตัวแรกของสตริงก็คือคำนำหน้าโดยมีจำนวนอักขระน้อยที่สุด ดังนั้นคำนำหน้าที่เกิดขึ้นสูงสุดจะเป็นอักขระตัวแรกของสตริงอย่างแน่นอน ตอนนี้งานลดลงเพื่อค้นหาการนับตัวอักษรตัวแรกในสตริง
อัลกอริทึม
-
อ่านสตริงของตัวอักษรพิมพ์เล็ก
-
สร้างฟังก์ชันเพื่อคืนค่าจำนวนคำนำหน้าที่ต้องการ
-
เริ่มนับ=0.
-
หาความถี่ของอักขระตัวแรกของสตริง
-
พิมพ์ความถี่ของอักขระตัวแรกของสตริงซึ่งในที่สุดจะเป็นการเกิดขึ้นสูงสุดของคำนำหน้าของสตริง
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#include <iostream>
using namespace std;
int findPrefixOccurence(string str){
char chars = str[0];
int countOccrence = 0;
for (int i = 0; i < str.length(); i++) {
if (str[i] == chars)
countOccrence++;
}
return countOccrence;
}
int main(){
string str = "xyyzxxyyzxyxx";
cout<<"The maximum occurence of prefix in the array is "<<findPrefixOccurence(str);
return 0;
} ผลลัพธ์
The maximum occurence of prefix in the array is 6