Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में स्ट्रिंग में किन्हीं दो समान वर्णों के बीच अधिकतम वर्णों की संख्या


हमें वर्णमाला की एक स्ट्रिंग दी गई है। सरणी में कम से कम एक वर्ण की दो घटनाएं हो सकती हैं। यहां कार्य किन्हीं दो घटनाओं के बीच अधिकतम वर्णों की संख्या ढूंढना है। यदि किसी वर्ण की कोई पुनरावृत्ति नहीं है तो -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
  1. C++ में BST के दो नोड्स के बीच अधिकतम तत्व C++ में BST के दो नोड्स के बीच अधिकतम तत्व

    समस्या कथन N तत्वों का एक ऐरे और दो पूर्णांक A, B दिए गए हैं जो दिए गए ऐरे से संबंधित हैं। arr[0] से arr[n-1] तक तत्व डालकर एक बाइनरी सर्च ट्री बनाएं। कार्य A से B तक के पथ में अधिकतम तत्व ढूंढना है। उदाहरण यदि ऐरे है {24, 23, 15, 36, 19, 41, 25, 35} तो हम BST को निम्नानुसार बना सकते हैं: यदि हम

  1. - C++ स्ट्रिंग कॉन्स्टेंट्स और कैरेक्टर कॉन्स्टेंट्स में अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल है। इसका प्रकार char है। उदाहरण के लिए, a ASCII आधारित सिस्टम पर मान 97 के साथ char प्रकार का है। डबल कोट्स में एक कैरेक्टर या कैरेक्टर्स की स्ट्रिंग एक स्ट्रिंग लिटरल दर्शाती है। इसका प्रकार const char[] है और यह स्ट्रिंग की लंबाई + 1 के आकार

  1. - C# प्रोग्राम स्ट्रिंग में किसी कैरेक्टर की घटनाओं की संख्या ढूंढने के लिए

    मान लें कि हमारी स्ट्रिंग है: String s = mynameistomhanks; अब एक नई सरणी बनाएं और इसे उपरोक्त घोषित स्ट्रिंग के साथ एक नई विधि में पास करें। यह स्ट्रिंग में कैरेक्टर्स की घटना की गणना करता है। static void calculate(String s, int[] cal) { for (int i = 0; i < s.Length; i++) cal[s[i]]++; }