Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में सबसे छोटा बहुमत सबस्ट्रिंग

मान लीजिए कि हमारे पास एक लोअरकेस वर्णमाला स्ट्रिंग है, हमें सबसे छोटी सबस्ट्रिंग की लंबाई (न्यूनतम लंबाई 2 है) का पता लगाना है, जैसे कि कुछ अक्षर संयुक्त अन्य अक्षरों की तुलना में अधिक दिखाई देते हैं। अगर हमें कोई समाधान नहीं मिल रहा है, तो -1 लौटें।

इसलिए, यदि इनपुट "abbbcde" जैसा है, तो आउटपुट 2 होगा, सबस्ट्रिंग "bb" की न्यूनतम लंबाई है और यह अन्य अक्षरों की तुलना में अधिक दिखाई देता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन को परिभाषित करें ठीक (), यह एक सरणी cnt लेगा,

  • कुल:=0, मैक्सवैल:=0

  • प्रत्येक तत्व के लिए इसे cnt में करें

    • कुल:=कुल + यह

    • maxVal :=maxVal का अधिकतम और यह

  • जब maxVal> (कुल - maxVal)

  • मुख्य विधि से, निम्न कार्य करें -

  • n :=s का आकार

  • रिट :=inf

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • यदि i + 1

      • वापसी 2

    • अन्यथा जब i + 2

      • रिट :=3

  • वापसी (यदि रिट inf के समान है, तो -1, अन्यथा रिट)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool ok(vector <int>& cnt){
      int total = 0;
      int maxVal = 0;
      for(auto& it : cnt){
         total += it;
         maxVal = max(maxVal, it);
      }
      return maxVal > (total - maxVal);
   }
   int solve(string s) {
      int n = s.size();
      int ret = INT_MAX;
      for(int i = 0; i < n; i++){
         if(i + 1 < n && s[i] == s[i + 1]){
            return 2;
         }else if(i + 2 < n && s[i] == s[i + 2]){
            ret = 3;
         }
      }
      return ret == INT_MAX ? -1 : ret;
   }
};
int main(){
   Solution ob;
   cout << (ob.solve("abbbcde"));
}

इनपुट

"abbbcde"

आउटपुट

2

  1. C++ में बार-बार सबस्ट्रिंग पैटर्न

    मान लीजिए कि हमारे पास एक गैर-रिक्त स्ट्रिंग है। हमें यह जांचना होगा कि क्या इसका एक सबस्ट्रिंग लेकर और सबस्ट्रिंग के कई बार जोड़कर इसका निर्माण किया जा सकता है। स्ट्रिंग में केवल लोअरकेस अंग्रेजी अक्षर होते हैं और इसकी लंबाई 10000 से अधिक नहीं होगी। इसलिए यदि इनपुट अबाबाबा जैसा है, तो उत्तर सही होग

  1. C++ में बहुसंख्यक तत्व

    7/2 देख सकते हैं। हम सरणी में x की घटनाओं की गणना कर सकते हैं, और यदि संख्या n/2 से अधिक है, तो उत्तर सही होगा, अन्यथा गलत। उदाहरण (C++) #include <iostream> #include <stack> using namespace std; bool isMajorityElement(int arr[], int n, int x){    int freq = 0;    for

  1. सी ++ में सबस्ट्रिंग

    एक सबस्ट्रिंग एक स्ट्रिंग का एक भाग है। सी ++ में सबस्ट्रिंग प्राप्त करने के लिए एक फ़ंक्शन सबस्ट्र () है। इस फ़ंक्शन में दो पैरामीटर हैं:पॉज़ और लेन। पॉज़ पैरामीटर सबस्ट्रिंग की प्रारंभ स्थिति को निर्दिष्ट करता है और लेन एक सबस्ट्रिंग में वर्णों की संख्या को दर्शाता है। एक प्रोग्राम जो C++ में सबस