假设我的约束是
1·; = N&LT = 10 ^ 9
0 <= k <= 9
在最短时间内搜索此内容的最佳算法是什么?
我尝试了两种方法: 我的第一种方法 n是数字,k是4或7
while(n>0)
{
d=n%10;
if(d==4 || d==7)
return true;
n/=10;
}
我的第二种方法是将数字转换为字符串并使用find函数:
string str = NumberToString(i);
if ((str.find("4") != std::string::npos) || (str.find("7") != std::string::npos))
c++;
还有另一种更快的方法来实现这一目标吗? 我需要的是这个数字应该包含4或7
答案 0 :(得分:1)
如果找到一个特定数字出现在一个数字中的次数是你的意思,那么复杂性将是 O(n),其中 n 是字符串的长度(数字):
char x = '7';
std::string number("9876541231654810654984431");
int count = 0;
for (size_t i = 0; i < number.size(); ++i)
if (number[i] == x) count++;