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

व्यवस्थित कतार C++ में

मान लीजिए एक स्ट्रिंग S है। S के सभी अक्षर लोअरकेस में हैं। फिर, हम कितनी भी चालें बना सकते हैं।

यहां, प्रत्येक चाल में, हम पहले K अक्षरों में से एक को चुनते हैं, उसे हटाते हैं, और उसे स्ट्रिंग के अंत में रखते हैं। हमें किसी भी संख्या में चालों के बाद लेक्सिकोग्राफिकली सबसे छोटी स्ट्रिंग ढूंढनी है।

उदाहरण के लिए, यदि इनपुट "cabaa" है और K = 3, तो आउटपुट "aaabc" होगा।

हल करने का दृष्टिकोण

मुख्य अंतर्दृष्टि: यदि K > 1, तो हम स्ट्रिंग को पूरी तरह से सॉर्ट कर सकते हैं। यदि K = 1, तो हम केवल रोटेट कर सकते हैं।

  • यदि K > 1: स्ट्रिंग को सॉर्ट करें और वापस करें

  • यदि K = 1: सभी n रोटेशन आजमाएं और न्यूनतम वापस करें

उदाहरण

#include <bits/stdc++.h> 
using namespace std; 

class Solution { 
public: 
    string orderlyQueue(string S, int K) { 
        if(K > 1){ 
            sort(S.begin(), S.end()); 
            return S; 
        } 
        
        string ret = S; 
        int n = S.size(); 
        
        for(int i = 1; i < n; i++){ 
            S = S.substr(1) + S.substr(0, 1); 
            if(S < ret) ret = S; 
        } 
        return ret; 
    } 
}; 

int main(){ 
    Solution ob; 
    cout << (ob.orderlyQueue("cabaa", 3)); 
    return 0;
}

इनपुट

"cabaa", 3

आउटपुट

aaabc
  1. C/C++ में प्रायोरिटी क्यू (Priority Queue) परिचय C/C++ में प्रायोरिटी क्यू (Priority Queue) परिचय

    एक प्रायोरिटी क्यू एक प्रकार की क्यू है जिसमें तत्वों को उन्हें असाइन की गई प्राथमिकताओं के अनुसार डाला या हटाया जाता है जहां प्राथमिकता एक पूर्णांक मान है जो 0-10 के बीच हो सकता है जहां 0 उच्चतम प्राथमिकता वाले तत्व को दर्शाता है और 10 निम्नतम प्राथमिकता वाले तत्व को दर्शाता है। प्रायोरिटी क्यू को

  1. - C++ में दिए गए समय पर कतार की व्यवस्था ज्ञात करें

    इस समस्या में, हमें केवल M और F वर्णों से युक्त एक स्ट्रिंग और एक समय t दिया गया है। हमारा कार्य दिए गए समय पर कतार की व्यवस्था ज्ञात करना है। स्ट्रिंग बस में प्रवेश करने के लिए एक सामान्य कतार में खड़े लोगों को परिभाषित करती है। कतार में सभी पुरुष इतने शिष्ट हैं कि यदि वे किसी भी समय अपने पीछे एक म

  1. C++ में क्यू का उपयोग करके BST में एक पथ को उल्टा करना C++ में क्यू का उपयोग करके BST में एक पथ को उल्टा करना

    एक बाइनरी सर्च ट्री दिया गया है, और हमें एक विशेष कुंजी से इसके पथ को उल्टा करना आवश्यक है, उदाहरण के लिए। समाधान खोजने का दृष्टिकोण इस दृष्टिकोण में, हम एक क्यू बनाएंगे और रूट मिलने तक सभी नोड्स को पुश करेंगे। उदाहरण left); cout key key = q1.front(); // हम वर्तमान के साथ पहली क्यू तत्व