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

C++ में समान स्ट्रिंग प्राप्त करने के लिए आवश्यक न्यूनतम घुमाव

समस्या कथन

एक स्ट्रिंग को देखते हुए, हमें समान स्ट्रिंग प्राप्त करने के लिए आवश्यक न्यूनतम संख्या में घुमावों को खोजने की आवश्यकता है

उदाहरण

यदि इनपुट स्ट्रिंग "bbbbbb" है तो न्यूनतम 1 रोटेशन आवश्यक है

एल्गोरिदम

1. Initialize result = 0
2. Make a temporary string equals to original string concatenated with itself.
3. Take the substring of temporary string of size same as original string starting from second character i.e. index 1
4. Increment the counter
5. Check whether the substring becomes equal to original string. If yes, then break the loop. Else go to step 2 and repeat it from the next index

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int getRotationCount(string str) {
   string temp = str + str;
   int n = str.length();
   for (int i = 1; i <= n; ++i) {
      string sub = temp.substr(i, str.size());
         if (str == sub) {
            return i;
         }
   }
   return n;
}
int main() {
   string str = "bbbbb";
   cout << "Rotation count = " << getRotationCount(str) <<
   endl;
   return 0;
}

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

आउटपुट

Rotation count = 1

  1. सी ++ प्रोग्राम दुश्मन को हराने के लिए आवश्यक न्यूनतम संख्या में संचालन का पता लगाने के लिए

    मान लीजिए, हम एक वीडियो गेम खेल रहे हैं जहां नायक अपने दुश्मनों को हराने के लिए चाकू का उपयोग करता है। नायक चाकू का उपयोग दुश्मन को मारने के लिए कर सकता है या वह इसे दुश्मन की ओर फेंक सकता है। यदि नायक चाकू फेंकता है, तो उसे फिर से प्राप्त नहीं किया जा सकता है। चाकू i द्वारा किए गए नुकसान को चाकू सर

  1. दिए गए सरणी से पहली स्ट्रिंग जिसका रिवर्स भी उसी सरणी में C++ . में मौजूद है

    इस समस्या में, हमें आकार N के स्ट्रिंग str[] की एक सरणी दी जाती है। हमारा कार्य दिए गए सरणी से पहली स्ट्रिंग को खोजने के लिए एक प्रोग्राम बनाना है जिसका रिवर्स भी उसी सरणी में मौजूद है । समस्या को समझने के लिए एक उदाहरण लेते हैं, Input: str[] = ["python", "program", "C#&qu

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

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