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

C++ में लेक्सिकोग्राफिक क्रम में अंतिम सबस्ट्रिंग (Last Substring in Lexicographical Order)


समस्या विवरण

एक स्ट्रिंग s दी गई है। लेक्सिकोग्राफिक (lexicographical) क्रम में s की अंतिम सबस्ट्रिंग (substring) ज्ञात करनी है।

उदाहरण

इनपुट

"abbbcabbc"

आउटपुट

"cabbc"

समाधान दृष्टिकोण (द्वि-सूचक - Two Pointer)

दो सूचक i और j वर्तमान सर्वश्रेष्ठ और उम्मीदवार सबस्ट्रिंग की शुरुआत दर्शाते हैं। k सामान्य उपसर्ग लंबाई है।

  1. i=0, j=1, k=0 से शुरू करें।
  2. जब j+k < n:
    • यदि s[i+k] == s[j+k]: k++ (सामान्य उपसर्ग बढ़ाएं)
    • यदि s[i+k] < s[j+k]: i = j; j++ (j बेहतर है)
    • अन्यथा: j = j + k + 1 (j छोड़ें)
    • k = 0 रीसेट करें
  3. उत्तर: s.substr(i)

समय जटिलता: O(n)

कार्यकारी प्रोग्राम

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

class Solution {
public:
    string lastSubstring(string s) {
        int i = 0, j = 1, k = 0;
        int n = s.size();
        while (j + k < n) {
            if (s[i + k] == s[j + k]) {
                k++;
                continue;
            }
            if (s[i + k] < s[j + k]) {
                i = j;
                j++;
            } else {
                j = j + k + 1;
            }
            k = 0;
        }
        return s.substr(i);
    }
};

int main() {
    Solution ob;
    cout << ob.lastSubstring("abbbcabbc");
    return 0;
}

आउटपुट

cabbc
  1. - C++ में वेक्टर को अवरोही क्रम में सॉर्ट करना

    C++ में वेक्टर को सॉर्ट करना std::sort() का उपयोग करके किया जा सकता है। यह <algorithm> हेडर में परिभाषित है। एक स्थिर सॉर्ट प्राप्त करने के लिए std::stable_sort का उपयोग किया जाता है। यह बिल्कुल sort() की तरह है लेकिन समान एलिमेंट्स के सापेक्ष क्रम को बनाए रखता है। आवश्यकतानुसार Quicksort(),

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

    सबस्ट्रिंग एक स्ट्रिंग का हिस्सा है। C++ में सबस्ट्रिंग प्राप्त करने के लिए एक फ़ंक्शन substr() है। इस फ़ंक्शन में दो पैरामीटर्स होते हैं: pos और len। pos पैरामीटर सबस्ट्रिंग की शुरुआती पोजीशन निर्दिष्ट करता है और len सबस्ट्रिंग में कैरेक्टर्स की संख्या दर्शाता है। उदाहरण #include <iostream>

  1. - C++ प्रोग्राम: एलिमेंट्स को लेक्सिकोग्राफिकल ऑर्डर (डिक्शनरी ऑर्डर) में सॉर्ट करना

    लेक्सिकोग्राफिकल ऑर्डर उस तरीके को दर्शाता है जिस तरह शब्दों को एक सूची में क्रमबद्ध किया जाता है, उनके अल्फाबेट्स के अनुसार वर्णमाला क्रम के आधार पर। उदाहरण: शब्दों की सूची: Harry Adam Sam शब्दों का लेक्सिकोग्राफिकल ऑर्डर: Adam Harry Sam उदाहरण #include <iostream> using namespace std; int m