C++实现:删除多位数中特定位数,使结果最小
以下是用C++实现的代码:\n\ncpp\n#include <iostream>\n#include <string>\n\nstd::string removeDigits(int y, int x) {\n std::string yStr = std::to_string(y);\n int n = yStr.length();\n \n if (n <= x) {\n return "0";\n }\n \n // 从左到右找到第一个比右边数字大的数字,删除它\n for (int i = 0; i < x; i++) {\n int j = 0;\n while (j < yStr.length() - 1 && yStr[j] <= yStr[j+1]) {\n j++;\n }\n yStr.erase(yStr.begin() + j);\n }\n \n // 删除前导零\n int i = 0;\n while (i < yStr.length() - 1 && yStr[i] == '0') {\n i++;\n }\n yStr.erase(0, i);\n \n return yStr;\n}\n\nint main() {\n int y, x;\n std::cout << "Enter a number (y): ";\n std::cin >> y;\n std::cout << "Enter the number of digits to remove (x): ";\n std::cin >> x;\n \n std::string result = removeDigits(y, x);\n std::cout << "The smallest number after removing " << x << " digits from " << y << " is: " << result << std::endl;\n \n return 0;\n}\n\n\n这段代码首先将输入的多位数y转换为字符串,然后通过一个循环,每次找到一个比右边数字大的数字,并删除它。这样就可以保证删除的数字最小。最后,删除结果中的前导零,并将结果输出。
原文地址: https://www.cveoy.top/t/topic/pRcX 著作权归作者所有。请勿转载和采集!