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

दोहराए गए उल्टा और जोड़ ऑपरेशन से बने बाइनरी स्ट्रिंग में k-वां बिट खोजें C++ में

मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है, प्रारंभ में यह "0" है। अब प्रत्येक पुनरावृत्ति में इसे उल्टा करें, और जोड़ें, इस प्रकार nवीं पुनरावृत्ति के बाद, हम kवां बिट खोजेंगे। मान लीजिए पुनरावृत्तियों की संख्या 4 है, और k = 7, तो यह होगा -

पुनरावृत्तिमान (प्रारंभ में 0)
101
20110
301101001
40110100110010110

तो 7वां बिट 1 है।

प्रत्येक पुनरावृत्ति में, पूरक खोजें, और जोड़ें, इस प्रकार nवीं पुनरावृत्ति के बाद, kवां बिट खोजें।

उदाहरण

#include <iostream>
using namespace std;

string getComplement(string bin) {
    string temp = "";
    for (int i = 0; i < bin.length(); i++) {
        if (bin[i] == '0')
            temp += "1";
        else
            temp += "0";
    }
    return temp;
}

char getCharacter(string bin_str, int n, int k) {
    string res = bin_str;
    for (int i = 0; i < n; i++) {
        res += getComplement(res);
    }
    return res[k];
}

int main() {
    int n = 4;
    string bin = "0";
    cout << 7 << "th character is: " << getCharacter(bin, n, 7);
}

आउटपुट

7th character is: 1

  1. - C++ में बाइनरी स्ट्रिंग S के योग के लिए आवश्यक न्यूनतम ऑपरेशन

    समस्या कथन एक बाइनरी स्ट्रिंग str दी गई है। str द्वारा दर्शाई गई संख्या बनाने के लिए किए जाने वाले न्यूनतम ऑपरेशन की संख्या ढूंढें। केवल निम्न ऑपरेशन किए जा सकते हैं: 2ˣ जोड़ें 2ˣ घटाएं यदि बाइनरी स्ट्रिंग 1000 है, तो केवल 1 ऑपरेशन करना होगा: 2³ जोड़ें। यदि बाइनरी स्ट्रिंग 101 है, तो 2 ऑपर

  1. - C++ में स्ट्रिंग में पहला दोहराया गया वर्ण ढूंढना

    मान लीजिए हमारे पास एक स्ट्रिंग है; हमें पहला वर्ण ढूंढना है जो दोहराया गया है। यदि स्ट्रिंग Hello Friends है, तो पहला दोहराया गया वर्ण l होगा। क्योंकि दो l एक के बाद एक हैं। इसे हल करने के लिए, हम हैशिंग तकनीक का उपयोग करेंगे। एक हैश टेबल बनाएं, प्रत्येक वर्ण को एक-एक करके स्कैन करें, यदि वर्ण मौज

  1. - बाइनरी और अनुक्रमिक खोज की तुलना करने के लिए C++ प्रोग्राम

    बाइनरी सर्च और अनुक्रमिक या लिनियर सर्च दोनों का उपयोग कंप्यूटर प्रोग्रामिंग में एलिमेंट खोजने के लिए किया जाता है। बाइनरी सर्च की समय जटिलता O(log n) है और अनुक्रमिक खोज की O(n) है। एल्गोरिदम शुरुआत    बाइनरी सर्च के लिए एल्गोरिदम:    BinarySearch() फ़ंक्शन arr डेटा की सरणी और n