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

C++ में पैलिंड्रोम क्रमपरिवर्तन करने के लिए न्यूनतम निष्कासन

समस्या कथन

एक स्ट्रिंग S को देखते हुए, हमें न्यूनतम वर्ण खोजने होंगे जिन्हें हम स्ट्रिंग S के किसी भी क्रमपरिवर्तन को एक पैलिंड्रोम बनाने के लिए हटा सकते हैं

उदाहरण

यदि str ="abcdba" है तो हम 1 वर्ण यानी 'c' या 'd' को हटा देते हैं।

एल्गोरिदम

1. There can be two types of a palindrome, even length, and odd length palindromes
2. We can deduce the fact that an even length palindrome must have every character occurring even number of times
3.An odd palindrome must have every character occurring even number of times except one character occurring odd number of time
4. Check the frequency of every character and those characters occurring odd number of times are then counted. Then the result is total count of odd frequency characters’ minus 1
. है

उदाहरण

#include <bits/stdc++.h>
#define MAX 26
using namespace std;
int minCharactersRemoved(string str) {
   int hash[MAX] = {0};
   for (int i = 0; str[i]; ++i) {
      hash[str[i] - 'a']++;
   }
   int cnt = 0;
   for (int i = 0; i < MAX; ++i) {
      if (hash[i] & 1) {
         ++cnt;
      }
   }
   return (cnt == 0) ? 0 : (cnt - 1);
}
int main(){
   string str = "abcdba";
   cout << "Minimum characters to be removed = " <<
   minCharactersRemoved(str) << endl;
   return 0;
}

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है

आउटपुट

Minimum characters to be removed = 1

  1. सी++ में यूलर सर्किट बनाने के लिए जोड़ने के लिए आवश्यक न्यूनतम किनारों

    अवधारणा बी नोड्स और किनारों के दिए गए अप्रत्यक्ष ग्राफ के संबंध में, काम दिए गए ग्राफ में यूलर सर्किट बनाने के लिए आवश्यक न्यूनतम किनारों को निर्धारित करना है। इनपुट b = 3, a = 2 Edges[] = {{1, 2}, {2, 3}} आउटपुट 1 1 से 3 को जोड़कर हम एक यूलर सर्किट बना सकते हैं। विधि ग्राफ में मौजूद होने क

  1. C++ पर पालिंड्रोम हटाना

    मान लीजिए कि हमारे पास एआर नामक एक पूर्णांक सरणी है, अब एक चाल में हम इंडेक्स i से j तक एक पैलिंड्रोमिक सबरे का चयन कर सकते हैं जहां i <=j, और दिए गए सरणी से उस सबरे को हटा दें। हमें यह ध्यान रखना होगा कि एक सबअरे को हटाने के बाद, बाईं ओर और उस सबएरे के दायीं ओर के तत्व हटाने के द्वारा छोड़े गए गैप

  1. C++ में जॉब शेड्यूल की न्यूनतम कठिनाई

    मान लीजिए कि हम d दिनों में कार्यों की एक सूची शेड्यूल करना चाहते हैं। कार्य निर्भर हैं इसलिए i-th कार्य पर काम करने के लिए, हमें सभी कार्यों को पूरा करना होगा जहां 0 <=j