Computer >> Máy Tính >  >> Lập trình >> C ++

Số lớn nhất được phép hoán đổi trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm số lớn nhất với một lần hoán đổi duy nhất.

Hãy xem các bước để giải quyết vấn đề.

  • Khởi tạo số n.
  • Chuyển đổi số nguyên thành chuỗi.
  • Viết một vòng lặp lặp lại từ phần cuối của chuỗi.
    • Tìm chỉ số và chữ số tối đa.
    • Nếu các chữ số hiện tại nhỏ hơn chữ số tối đa, thì hãy cập nhật chỉ mục bắt đầu với chỉ mục hiện tại và chỉ mục kết thúc với chỉ mục chữ số tối đa.
  • Nếu chỉ số bắt đầu là -1, thì trả về n.
  • Nếu khác, hãy hoán đổi các chữ số trong chỉ mục đầu và chỉ mục kết thúc.
  • Trả về số nguyên bằng cách chuyển đổi.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
int getLargestNumber(int n) {
   int maxDigit = -1;
   int maxDigitIndex = -1;
   int startIndex = -1;
   int endIndex = -1;
   string nInStr = to_string(n);
   for (int i = nInStr.size() - 1; i >= 0; i--) {
      if (nInStr[i] > maxDigit) {
         maxDigit = nInStr[i];
         maxDigitIndex = i;
         continue;
      }
      if (nInStr[i] < maxDigit) {
         startIndex = i;
         endIndex = maxDigitIndex;
      }
   }
   if (startIndex == -1) {
      return n;
   }
   swap(nInStr[startIndex], nInStr[endIndex]);
   return stoi(nInStr);
}
int main() {
   int n = 678;
   cout << getLargestNumber(n) << endl;
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

876

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.