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

C++ में स्ट्रिंग में संतुलन स्थितियों की संख्या ढूंढें


मान लीजिए हमारे पास एक स्ट्रिंग है। हमें उस स्ट्रिंग में संतुलन स्थिति की गिनती ढूंढनी है जहां से स्ट्रिंग का बायां और दायां भाग समान वर्ण रखता है। वर्णों की आवृत्ति मायने नहीं रखती। तो यदि स्ट्रिंग "ABAABA" है, तो संतुलन स्थितियों की संख्या 3 है। ये स्थितियां AB|AABA, ABA|ABA, ABAA|BA हैं।

इसे हल करने के लिए, हम कुछ कुशल दृष्टिकोण का पालन करेंगे। स्ट्रिंग को ट्रैवर्स करने के बाद हम पहले right[] को सभी वर्णों की गिनती से भरते हैं। फिर स्ट्रिंग को बाएं से दाएं ट्रैवर्स करें। प्रत्येक वर्ण के लिए हम left[] में इसकी गिनती बढ़ाते हैं और right में गिनती घटाते हैं। ट्रैवर्स किए जा रहे किसी भी बिंदु के लिए, यदि सभी वर्ण जिनके left में शून्येतर मान हैं, उनके right में भी शून्येतर मान हैं, और इसके विपरीत भी सत्य है। तो परिणाम बढ़ाएं।

उदाहरण

#include <iostream> 
#include <algorithm> 
#define MAX_CHAR 256 
using namespace std; 

int countBalancePoints(string str) { 
    int left[MAX_CHAR] = {0}; 
    int right[MAX_CHAR] = {0}; 
    
    for (int i = 0; i < str.length(); i++) 
        right[str[i]]++; 
    
    int count = 0; 
    
    for (int i = 0; i < str.length(); i++) { 
        left[str[i]]++; 
        right[str[i]]--; 
        
        int j; 
        for (j = 0; j < MAX_CHAR; j++) { 
            if ((left[j] == 0 && right[j] != 0) || (left[j] != 0 && right[j] == 0)) 
                break; 
        } 
        
        if (j == MAX_CHAR) 
            count++; 
    } 
    
    return count; 
} 

int main() { 
    char str[] = "ABAABA"; 
    cout << "Number of balance points: " << countBalancePoints(str); 
}

आउटपुट

Number of balance points: 3

  1. - C++ प्रोग्राम: अनसॉर्टेड सरणी में k निकटतम संख्याएं ज्ञात करना

    मान लें हमारे पास कुछ तत्वों के साथ एक सरणी A है। सरणी अनसॉर्टेड है। हमारे पास दो अन्य मान X और k हैं। हमारा कार्य सरणी A से X की k निकटतम तत्वों की संख्या ज्ञात करना है। यदि तत्व X सरणी में मौजूद है, तो यह आउटपुट में नहीं दिखाया जाएगा। यदि A = [48, 50, 55, 30, 39, 35, 42, 45, 12, 16, 53, 22, 56] और

  1. - C++ में लंबाई L की स्ट्रिंग के जादुई जोड़ों की संख्या ढूंढना

    मान लीजिए हमारे पास दो स्ट्रिंग्स str1 और str2 हैं, हमें लंबाई L के जादुई जोड़ों की संख्या ढूंढनी है। दो स्ट्रिंग्स जादुई होंगी यदि प्रत्येक इंडेक्स i के लिए, str1[i] < str2[i] हो। हमें जोड़ों की संख्या गिननी है चूंकि संख्या बहुत बड़ी है, तो उत्तर को मॉड्यूलो 10⁹ का उपयोग करके लौटाएं। स्ट्रिंग्स केव

  1. - C++ प्रोग्राम: मीडियन के निकटतम k नंबर खोजना

    यह C++ प्रोग्राम एक सेट S (n नंबर्स) के मीडियन (Median) के निकटतम k नंबर खोजता है। यह क्विकसॉर्ट द्वारा सॉर्टिंग के बाद मीडियन के दोनों ओर से निकटतम तत्व चुनता है। एल्गोरिदम शुरुआत 1. फंक्शन Partition() - हाई पर पिवट के आधार पर ऐरे पार्टीशन करें 2. फंक्शन QuickSort() - क्विकसॉर्ट एल्गोरिदम से