C++ 中允许一次交换的最大数

在本教程中,我们将编写一个程序,通过一次交换找到最大的数。

让我们看看解决问题的步骤。

  • 初始化数字 n。

  • 将整数转换为字符串。

  • 编写一个从字符串结尾开始迭代的循环。

    • 找到大数字" title="最大数字">最大数字和索引。

    • 如果当前位数小于最大位数,则使用当前索引更新开始索引,使用最大位数索引更新结束索引。

  • 如果起始索引为 -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

结论

如果您对本教程有任何疑问,请在评论部分提及。

以上是 C++ 中允许一次交换的最大数 的全部内容, 来源链接: utcz.com/z/327555.html

回到顶部