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