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

सी ++ में स्ट्रिंग के विभाजन की न्यूनतम संख्या के बाद पैलिंड्रोम की संख्या गिनने का कार्यक्रम

मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग है, हमें इसे यथासंभव कुछ स्ट्रिंग्स में विभाजित करना होगा जैसे कि प्रत्येक स्ट्रिंग एक पैलिंड्रोम हो और फिर स्ट्रिंग्स की संख्या ज्ञात करें।

इसलिए, यदि इनपुट s ="लेवलरेसकार" जैसा है, तो आउटपुट 2 होगा, क्योंकि दो पैलिंड्रोम "लेवल" और "रेसकार" हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=A का आकार

  • आकार का एक सरणी परिणाम परिभाषित करें (n + 1)

  • परिणाम [एन] :=-1

  • इनिशियलाइज़ करने के लिए i :=n-1, जब i>=0, अपडेट करें (i से 1 घटाएं), −

    करें
    • परिणाम [i] :=n - i - 1

    • इनिशियलाइज़ j :=i के लिए, जब j

      • यदि श्रेणी i से j - i तक A का स्थानापन्न पैलिंड्रोम है, तो -

        • परिणाम [i]:=न्यूनतम परिणाम [i] और 1 + परिणाम [j + 1]

  • वापसी परिणाम[0] + 1

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool isPalindrome(string A) {
      int left = 0;
      int right = A.size() - 1;
      while (left < right) {
         if (A[left] != A[right]) {
            return 0;
         }
         left++;
         right--;
      }
      return 1;
   }
   int solve(string A) {
      int n = A.size();
      vector<int> result(n + 1);
      result[n] = -1;
      for (int i = n - 1; i >= 0; i--) {
         result[i] = n - i - 1;
         for (int j = i; j < n; j++) {
            if (isPalindrome(A.substr(i, j - i + 1))) {
               result[i] = min(result[i], 1 + result[j + 1]);
            }
         }
      }
      return result[0] + 1;
   }
};
int solve(string s) {
   return (new Solution())->solve(s);
}
int main(){
   string s = "levelracecar";
   cout << solve(s);
}

इनपुट

"levelracecar"

आउटपुट

2

  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. सी ++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास [u, v] के रूप में पेड़ के किनारों की एक सूची है, यह इंगित करता है कि u और v के बीच एक अप्रत्यक्ष किनारा है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले दौर में, हम आगे बढ़ते हैं, फिर अगले दौर में प्रतिद्वंद्वी चलता है और इसी

  1. सी # प्रोग्राम एक स्ट्रिंग में शब्दों की संख्या की गणना करने के लिए

    आइए पहले स्ट्रिंग घोषित करें - string str = "Hello World!"; अब पूरी स्ट्रिंग के माध्यम से लूप करें और व्हाइटस्पेस या टैब या न्यूलाइन कैरेक्टर खोजें - while (a <= str.Length - 1) {    if(str[a]==' ' || str[a]=='\n' || str[a]=='\t') {