इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो एक एकल स्वैप के साथ सबसे बड़ी संख्या ढूंढता है जो दी गई संख्या 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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।