इस समस्या में, हमें लोअरकेस में सभी वर्णों की एक सरणी दी गई है। हमारा कार्य सरणी में प्रीफिक्स की अधिकतम घटना ज्ञात करना है।
हमें उन गैर-रिक्त प्रीफिक्स की घटना गिननी है जिनकी घटना संख्या अधिकतम है।
उदाहरण से समझते हैं:
इनपुट: स्ट्रिंग = "xyyzkxyyzk" आउटपुट: 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