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

जांचें कि दी गई स्ट्रिंग सी ++ में योग-स्ट्रिंग है या नहीं

यहां हम देखेंगे कि कैसे जांचा जाए कि कोई स्ट्रिंग सम-स्ट्रिंग है या नहीं। एक स्ट्रिंग को सम-स्ट्रिंग कहा जाता है यदि सबसे दाहिने सबस्ट्रिंग को इसके पहले दो सबस्ट्रिंग के योग के रूप में लिखा जा सकता है, और वही इसके पहले सबस्ट्रिंग के लिए पुनरावर्ती सत्य है। मान लीजिए 12243660 की तरह एक स्ट्रिंग एक योग स्ट्रिंग है, जैसे 12 + 24 =36, और 36 स्ट्रिंग में 12 और 24 के बाद मौजूद है, फिर से 24 + 36 =60, यह भी स्ट्रिंग में मौजूद है।

एक स्ट्रिंग S को सम-स्ट्रिंग कहा जा सकता है, यदि वह इस नियम का पालन करती है -

(𝑖,𝑥)+𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑥+1,𝑗)=(𝑗+1,𝑙)

(𝑥+1,𝑗)+𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑗+1,𝑙)=𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑙+1,𝑚)

उदाहरण

#include <bits/stdc++.h>
using namespace std;
string get_string_sum(string str1, string str2) {
   if (str1.size() < str2.size())
      swap(str1, str2);
   int len1 = str1.size();
   int len2 = str2.size();
   string ans = "";
   int carry = 0;
   for (int i = 0; i < len2; i++) {
      int ds = ((str1[len1 - 1 - i] - '0') + (str2[len2 - 1 - i] - '0') + carry) % 10;
      carry = ((str1[len1 - 1 - i] - '0') + (str2[len2 - 1 - i] - '0') + carry) / 10;
      ans = char(ds + '0') + ans;
   }
   for (int i = len2; i < len1; i++) {
      int ds = (str1[len1 - 1 - i] - '0' + carry) % 10;
      carry = (str1[len1 - 1 - i] - '0' + carry) / 10;
      ans = char(ds + '0') + ans;
   }
   if (carry)
      ans = char(carry + '0') + ans;
   return ans;
}
bool sumStrCheckHelper(string str, int beg, int len1, int len2) {
   string sub1 = str.substr(beg, len1);
   string sub2 = str.substr(beg + len1, len2);
   string sum = get_string_sum(sub1, sub2);
   int sum_len = sum.size();
   if (sum_len > str.size() - len1 - len2 - beg)
      return false;
   if (sum == str.substr(beg + len1 + len2, sum_len)) {
      if (beg + len1 + len2 + sum_len == str.size())
         return true;
      return sumStrCheckHelper(str, beg + len1, len2, sum_len);
   }
   return false;
}
bool isSumStr(string str) {
   int n = str.size();
   for (int i = 1; i < n; i++)
      for (int j = 1; i + j < n; j++)
      if (sumStrCheckHelper(str, 0, i, j))
         return true;
   return false;
}
int main() {
   if(isSumStr("1212243660"))
      cout << "This is sum-string";
   else
      cout << "This is not sum-string";
}

आउटपुट

This is sum-string

  1. जाँच करें कि क्या दिया गया बाइनरी ट्री C++ में SumTree है

    यहां हम देखेंगे कि कैसे जांचा जाए कि बाइनरी ट्री सम-ट्री है या नहीं। अब प्रश्न यह है कि योग वृक्ष क्या है। सम-ट्री एक बाइनरी ट्री है जहाँ एक नोड अपने बच्चों का योग मान रखेगा। पेड़ की जड़ में उसके नीचे के सभी तत्वों का योग होगा। यह सम-वृक्ष का उदाहरण है - इसे चेक करने के लिए हम एक आसान सी ट्रिक अप

  1. जांचें कि स्ट्रिंग में सी ++ में उप-स्ट्रिंग है या नहीं

    यहां हम देखेंगे कि कैसे स्ट्रिंग लाइब्रेरी फ़ंक्शंस का उपयोग C++ में स्ट्रिंग्स से मिलान करने के लिए किया जा सकता है। यहां हम मुख्य स्ट्रिंग में सबस्ट्रिंग की घटनाओं को प्राप्त करने के लिए खोज () ऑपरेशन का उपयोग कर रहे हैं। यह खोज () विधि पहला स्थान लौटाती है जहाँ स्ट्रिंग पाई जाती है। यहां हम सभी म

  1. कैसे जांचें कि कोई सी/सी ++ स्ट्रिंग एक int है या नहीं?

    यह जांचने के कई तरीके हैं कि स्ट्रिंग एक इंट है या नहीं और उन तरीकों में से एक है स्ट्रिंग की जांच के लिए isdigit() का उपयोग करना। यह जांचने के लिए यहां एक उदाहरण दिया गया है कि स्ट्रिंग एक int है या नहीं C++ भाषा में, उदाहरण #include<iostream> #include<string.h> using namespace std; i