C++ 中允许一次交换的最大数
在本教程中,我们将编写一个程序,通过一次交换找到最大的数。
让我们看看解决问题的步骤。
初始化数字n。
将整数转换为字符串。
编写一个从字符串结尾开始迭代的循环。
找到最大数字和索引。
如果当前位数小于最大位数,则使用当前索引更新开始索引,使用最大位数索引更新结束索引。
如果起始索引为-1,则返回n。
否则交换开始和结束索引中的数字。
通过转换返回整数。
示例
让我们看看代码。
#include输出结果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
结论
如果您对本教程有任何疑问,请在评论部分提及。