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