हमें वर्णमाला की एक स्ट्रिंग दी गई है। सरणी में कम से कम एक वर्ण की दो घटनाएं हो सकती हैं। यहां कार्य किन्हीं दो घटनाओं के बीच अधिकतम वर्णों की संख्या ढूंढना है। यदि किसी वर्ण की कोई पुनरावृत्ति नहीं है तो -1 लौटाएं।
इनपुट
स्ट्रिंग str = "abcdba"
आउटपुट
स्ट्रिंग में किन्हीं दो समान वर्णों के बीच अधिकतम वर्णों की संख्या: 4
व्याख्या
दोहराने वाले वर्ण केवल 'a' और 'b' हैं सूचकांकों के साथ:
1. 'a' पहला सूचकांक 0 अंतिम 5, बीच में वर्ण 5-0-1 = 4 2. 'b' पहला सूचकांक 1 अंतिम 4, बीच में वर्ण 4-1-1 = 2 अधिकतम दोहराने वाले वर्णमाला के बीच वर्ण: 4
इनपुट
स्ट्रिंग str = "AbcAaBcbC"
आउटपुट
स्ट्रिंग में किन्हीं दो समान वर्णों के बीच अधिकतम वर्णों की संख्या: 5
व्याख्या
दोहराने वाले वर्ण केवल 'A', 'b', 'c' हैं सूचकांकों के साथ:
1. 'A' पहला सूचकांक 0 अंतिम 3, बीच में वर्ण 3-0-1 = 2 2. 'b' पहला सूचकांक 1 अंतिम 7, बीच में वर्ण 7-1-1 = 5 3. 'c' पहला सूचकांक 2 अंतिम 6, बीच में वर्ण 6-2-1 = 3 अधिकतम दोहराने वाले वर्णमाला के बीच वर्ण: 5
नोट - यदि इनपुट स्ट्रिंग "abcdefg" है, तो कोई दोहराने वाले वर्ण नहीं हैं इसलिए फ़ंक्शन -1 लौटाएगा।
उपयोग किया गया दृष्टिकोण
हम वर्णों की स्ट्रिंग वाली एक वर्ण सरणी Str[] लेते हैं।
फ़ंक्शन maxChars(char str[], int n) किन्हीं दो दोहराने वाले वर्णमाला के बीच अधिकतम वर्णों की संख्या की गणना के लिए उपयोग किया जाता है।
हम चर maxC को -1 से प्रारंभ करते हैं।
फॉर लूप के अंदर स्ट्रिंग की सरणी को शुरुआत से पार करते हैं।
नेस्टेड फॉर लूप में शेष वर्णों को पार करते हैं और पुनरावृत्तियों की खोज करते हैं (if (str[i] == str[j]))।
यदि सत्य है तो सूचकांकों को घटाकर वर्णों के बीच का अंतर निकालें (temp = j - i - 1)।
यदि यह मान अब तक का अधिकतम है, तो इसे maxC में संग्रहीत करें।
पूरी स्ट्रिंग पार करने के बाद maxC लौटाएं।
उदाहरण
#include <stdio.h> #include <stdio.h> #include <math.h> int maxChars(char str[], int n){ int size = n; int maxC = -1; for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (str[i] == str[j]){ int temp = abs(j - i - 1); maxC = maxC > temp ? maxC : temp; } return maxC; } // ड्राइवर कोड int main(){ char Str[] = "AbcAaBcbC"; printf("स्ट्रिंग में किन्हीं दो समान वर्णों के बीच अधिकतम वर्णों की संख्या: %d", maxChars(Str, 9)); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
स्ट्रिंग में किन्हीं दो समान वर्णों के बीच अधिकतम वर्णों की संख्या: 5