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

जांचें कि सी ++ में स्ट्रिंग में सेल को एक से अधिक बार देखा जा सकता है या नहीं

मान लीजिए कि हमारे पास डॉट्स (.) और एक संख्या के साथ एक स्ट्रिंग है, एक बिंदु इंगित करता है कि सेल खाली है, और यदि किसी सेल में कोई संख्या x है, तो यह इंगित करता है कि हम स्ट्रिंग के भीतर x चरणों को दाएं या बाएं स्थानांतरित कर सकते हैं। हमारा काम यह जांचना है कि हम एक सेल में एक से अधिक बार जा सकते हैं या नहीं। उदाहरण के लिए, यदि कोई स्ट्रिंग ". 2. . . 2. ”, तब हम चौथे सेल में दो अलग-अलग तरीकों से जा सकते हैं। दूसरे सेल से दो कदम से दाएं, या सेल 6 से दो कदम बाएं से।

स्ट्रिंग के ith सेल को कितनी बार देखा जा सकता है, इसका ट्रैक रखने के लिए हम विज़िट किए गए [] नामक एक सरणी का उपयोग करेंगे। अब स्ट्रिंग को पार करें, और जांचें कि क्या वर्तमान वर्ण डॉट है, या कोई संख्या है। डॉट के लिए, कुछ भी न करें, x के लिए, संख्या बढ़ाएं, और विज़िट किए गए सरणी में विज़िट की संख्या [i - x, i + x] के भीतर 1 से बढ़ाएं। विज़िट किए गए सरणी को ट्रैवर्स करके, यदि हमें कुछ कमरा मिलता है तो विज़िट किया जाता है एक से अधिक बार या नहीं।

उदाहरण

#include <iostream>
#include <queue>
using namespace std;
class Node {
   public:
   int key;
   Node *left, *right;
};
Node* getNode(int key) {
   Node* newNode = new Node;
   newNode->key = key;
   newNode->left = newNode->right = NULL;
   return newNode;
}
bool isLevelWiseSorted(Node* root) {
   int prevMax = INT_MIN;
   int min_val, max_val;
   int levelSize;
   queue<Node*> q;
   q.push(root);
   while (!q.empty()) {
      levelSize = q.size();
      min_val = INT_MAX;
      max_val = INT_MIN;
      while (levelSize > 0) {
         root = q.front();
         q.pop();
         levelSize--;
         min_val = min(min_val, root->key);
         max_val = max(max_val, root->key);
         if (root->left)
            q.push(root->left);
         if (root->right)
            q.push(root->right);
      }
      if (min_val <= prevMax)
         return false;
         prevMax = max_val;
   }
   return true;
}
int main() {
   Node* root = getNode(1);
   root->left = getNode(2);
   root->right = getNode(3);
   root->left->left = getNode(4);
   root->left->right = getNode(5);
   root->right->left = getNode(6);
   root->right->right = getNode(7);
   if (isLevelWiseSorted(root))
      cout << "Tree is levelwise Sorted";
   else
      cout << "Tree is Not levelwise sorted";
}

आउटपुट

Tree is level wise Sorted

  1. कैसे जांचें कि इनपुट सी ++ में संख्यात्मक है या नहीं?

    यहां हम देखेंगे कि कैसे जांचा जाता है कि दिया गया इनपुट संख्यात्मक स्ट्रिंग है या सामान्य स्ट्रिंग है। संख्यात्मक स्ट्रिंग में वे सभी वर्ण होंगे जो 0 - 9 की सीमा में हैं। समाधान बहुत सरल है, हम बस प्रत्येक वर्ण को एक-एक करके देखेंगे, और जांचेंगे कि यह संख्यात्मक है या नहीं। यदि यह संख्यात्मक है, तो

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

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

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

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