对于这个问题,我需要在一个较大的数字中找到最大的三位数字。
示例测试用例 1:
534535
输出:
535
示例测试用例 2:
23457888976
输出 :
976
我试过以下代码:
#include <iostream>
using namespace std;
int main() {
int num;
cin>>num;
int len= to_string(num).length();
int arr[10],lnum=0,max=0;
for (int i =len-1;i>=0;i--)
{
arr[i] = num%10;
num =num/10; //to convert int into array
}
for (int i=0;i<len-2;i++)
{
if (arr[i] >arr[i+1])
lnum = arr[i]*100+arr[i+1]*10+arr[i];
if (lnum>max)
max= lnum;
}
cout<<max;
return 0;
}
尽管此代码似乎适用于测试用例 1,但它不适用于大多数输入。
(也请帮忙。)
1. 这仅适用于 10 位数字(同样,大多数输出错误)。如果数字较大怎么办?
2.有没有更好的方法将整数转换成数组?或者字符串数组会以类似的方式工作吗?
3.真的很慢,谁能帮我弄清楚如何加快速度?
谢谢你的帮助 !!
原文由 Shinichi 发布,翻译遵循 CC BY-SA 4.0 许可协议
此代码的时间复杂度为 O(n),其中 n 是输入字符串的长度,空间复杂度为 O(1)