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

C++ में समान पड़ोसियों वाले वर्णों की गिनती करें


हमें एक स्ट्रिंग दी गई है, मान लीजिए str और कार्य स्ट्रिंग str में उन वर्णों की संख्या की गणना करना है जिनके समान पड़ोसी हैं और इसमें स्ट्रिंग में एक वर्ण के बाएं और दाएं दोनों तरफ शामिल होंगे। साथ ही, इस परिदृश्य में स्ट्रिंग में पहला और अंतिम वर्ण हमेशा माना जाएगा क्योंकि उनके पास केवल एक आसन्न वर्ण होता है।

उदाहरण के लिए

इनपुट - string str = "poiot" आउटपुट - गिनती 3 है

व्याख्या - दी गई स्ट्रिंग में वर्ण p, t और i के समान पड़ोसी हैं इसलिए गिनती 3 तक बढ़ जाएगी।

इनपुट - string str = "nitihig" आउटपुट - गिनती 4 है

व्याख्या - दी गई स्ट्रिंग में वर्ण n, t, h और g के समान पड़ोसी हैं इसलिए गिनती 4 तक बढ़ जाएगी।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • स्ट्रिंग को एक चर में इनपुट करें, मान लीजिए str

  • length() फंक्शन का उपयोग करके स्ट्रिंग str की लंबाई की गणना करें जो स्ट्रिंग में स्पेस सहित अक्षरों की संख्या के अनुसार एक पूर्णांक मान लौटाएगा।

  • यदि स्ट्रिंग की लंबाई 2 से कम या बराबर है तो स्ट्रिंग की लंबाई के रूप में गिनती लौटाएं क्योंकि उन सभी को गिना जाएगा।

  • यदि स्ट्रिंग की लंबाई 2 से अधिक है, तो count को 2 से आरंभ करें।

  • अब, i को 1 से शुरू करके और i के (लंबाई-1) से कम होने तक लूप शुरू करें

  • लूप के अंदर, जांचें कि क्या (str[i-1] = str[i+1]) है तो count को 1 से बढ़ाएं

  • अब count का कुल मान लौटाएं

  • परिणाम प्रिंट करें।

उदाहरण

#include <iostream>
using namespace std;

// वर्णों को गिनने के लिए
int countChar(string st) {
    int size = st.length();
    if (size <= 2) {
        return size;
    }
    int result = 2;
    // स्ट्रिंग को पार करें
    for (int i = 1; i < size - 1; i++) {
        // यदि पिछला और अगला वर्ण समान है तो गिनती को 1 से बढ़ाएं
        if (st[i - 1] == st[i + 1]) {
            result++;
        }
    }
    // परिणाम लौटाएं
    return result;
}

int main() {
    string st = "poiot";
    cout << "count is " << countChar(st);
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा

count is 3

  1. - C++ में Longest Substring with At Least K Repeating Characters

    मान लीजिए हमारे पास एक स्ट्रिंग s है, और हमें दिए गए स्ट्रिंग (केवल लोअरकेस अक्षरों से युक्त) के सबसे लंबे उपस्ट्रिंग T की लंबाई ढूंढनी है जैसे कि T में प्रत्येक वर्ण कम से कम k बार प्रकट होता है। इसलिए यदि स्ट्रिंग ababbc है और k = 2, तो आउटपुट 3 होगा और सबसे लंबा उपस्ट्रिंग ababb होगा, क्योंकि वहा

  1. - C++ में वर्णों की पुनरावृत्ति के साथ सभी क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें n वर्णों की एक स्ट्रिंग दी गई है और हमें स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तन प्रिंट करने हैं। स्ट्रिंग के वर्णों को दोहराने की अनुमति है। क्रमपरिवर्तन की प्रिंटिंग वर्णमाला क्रम में (लेक्सिकोग्राफिकली क्रमबद्ध क्रम) में की जानी चाहिए। विषय को बेहतर ढंग से समझने के लिए एक उदाहर

  1. - C++ में getline (string)

    इसका उपयोग स्ट्रीम से अनफॉर्मेटेड इनपुट के रूप में कैरेक्टर्स निकालने और उन्हें c-स्ट्रिंग के रूप में s में संग्रहीत करने के लिए किया जाता है, जब तक कि निकाला गया कैरेक्टर डिलिमिटिंग कैरेक्टर न हो, या n कैरेक्टर्स s में लिखे जा चुके हों (टर्मिनेटिंग नल कैरेक्टर सहित)। डिक्लेरेशन इस प्रकार है: basic