इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो एक एकल स्वैप के साथ सबसे बड़ी संख्या ढूंढता है जो दी गई संख्या n से कम है।
आइए समस्या को हल करने के लिए चरणों को देखें।
- संख्या n प्रारंभ करें।
- स्ट्रिंग के अंत से पुनरावृति करें और उस अंक का सूचकांक ज्ञात करें जो उसके अगले अंक से बड़ा है। इसे एक वेरिएबल में स्टोर करें।
- लूप मिलते ही उसे तोड़ दें।
- स्ट्रिंग के अंत से उपरोक्त इंडेक्स तक की संख्या पर पुनरावृति करें।
- अंक का सूचकांक ज्ञात कीजिए जो उपरोक्त अनुक्रमित अंक से कम है और क्षेत्र में सभी के बीच बड़ा है।
-
ऊपर दिए गए दो इंडेक्स पर अंकों को स्वैप करें। अपडेटेड नंबर लौटाएं।
उदाहरण
आइए कोड देखें।
#include <bits/stdc++.h> using namespace std; string getTheNumber(string str) { int length = str.length(); int index = -1; for (int i = length - 2; i >= 0; i--) { if (str[i] > str[i+1]) { index = i; break; } } int smallerDigitIndex = -1; for (int i = length - 1; i > index; i--) { if (str[i] < str[index]) { if (smallerDigitIndex == -1 || str[i] >= str[smallerDigitIndex]) { smallerDigitIndex = i; } } } if (index == -1) { return "-1"; } if (smallerDigitIndex != -1) { swap(str[index], str[smallerDigitIndex]); return str; } return "-1"; } int main() { string str = "54624"; cout << getTheNumber(str) << endl; return 0; }
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
54426
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।