在 C++ 中找到最近且较小的整洁数


假设我们有一个数 n,我们必须找到 n 最接近且较小的整洁数。因此,如果一个数的所有数字都按非递减顺序排列,则称其为整洁数。所以如果这个数是 45000,那么最接近且较小的整洁数将是 44999。

为了解决这个问题,我们将从尾部遍历这个数,当整洁属性被违背时,我们将数字减小 1,并使所有后续数字都变为 9。

示例

 实时演示

#include<iostream>
using namespace std;
string tidyNum(string number) {
   for (int i = number.length()-2; i >= 0; i--) {
      if (number[i] > number[i+1]) {
         number[i]--;
         for (int j=i+1; j<number.length(); j++)
            number[j] = '9';
      }
   }
   return number;
}
int main() {
   string str = "45000";
   string num = tidyNum(str);
   cout << "The tidy number is: " << num;
}

输出

The tidy number is: 44999

更新于: 2019 年 12 月 19 日

95 次浏览

启动事业

完成课程获得认证

开始
广告