Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 한 번의 스왑이 허용되는 가장 큰 수

<시간/>

이 튜토리얼에서는 한 번의 스왑으로 가장 큰 수를 찾는 프로그램을 작성할 것입니다.

문제를 해결하는 단계를 살펴보겠습니다.

  • 숫자 n을 초기화합니다.
  • 정수를 문자열로 변환합니다.
  • 문자열의 끝에서 반복하는 루프를 작성하십시오.
    • 최대 자릿수와 색인을 찾습니다.
    • 현재 자릿수가 최대 자릿수보다 작으면 시작 인덱스를 현재 인덱스로 업데이트하고 끝 인덱스를 최대 자릿수 인덱스로 업데이트합니다.
  • 시작 인덱스가 -1이면 n을 반환합니다.
  • 그렇지 않으면 시작 인덱스와 끝 인덱스의 숫자를 바꿉니다.
  • 변환하여 정수를 반환합니다.

예시

코드를 봅시다.

#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;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

876

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.