// 定义一个名为Solution的类
class Solution {
public:// 定义公共成员函数:计算并返回大于等于输入整数N且其各位数字非降序排列的最小整数int monotoneIncreasingDigits(int N) {// 将整数N转换成字符串形式,方便操作每一位数字string strNum = to_string(N);// 定义变量flag,用于记录需要将哪些位置的数字替换为'9'的起始索引// 初始化为字符串长度,表示最坏情况下可能从第一位开始替换int flag = strNum.size();// 从字符串末尾向前遍历,检查相邻两位数字是否满足非降序排列for (int i = strNum.size() - 1; i > 0; i--) {// 如果前一位数字大于后一位数字,则需要调整并记录下flag的位置if (strNum[i - 1] > strNum[i]) {flag = i;// 将前一位数字减1以满足非降序排列的要求strNum[i - 1]--;}}// 从flag位置开始(含)向后遍历,将所有位置上的数字替换为'9'for (int i = flag; i < strNum.size(); i++) {strNum[i] = '9';}// 将处理后的字符串转换回整数并返回结果return stoi(strNum);}
};
这段代码实现的功能是:给定一个整数N,找出大于等于N且其各位数字非降序排列的最小整数。通过将整数转换为字符串,可以方便地逐位处理数字,当发现某一位数字大于其后一位时,将其减1,并将后续的所有数字置为9。最后将处理过的字符串转回整数类型并返回。