私の制約が
1 <= n <= 10 ^ 9 0 <= k <= 9であると仮定します
最短時間でこれを検索するための最良のアルゴリズムは何でしょうか?
私はこれのために2つの方法を試しました:私の最初の方法nは数であり、kは4または7です
while(n>0)
{
d=n%10;
if(d==4 || d==7)
return true;
n/=10;
}
私の2番目の方法は、数値を文字列に変換し、find関数を使用することです。
string str = NumberToString(i);
if ((str.find("4") != std::string::npos) || (str.find("7") != std::string::npos))
c++;
これを達成するための別のより速い方法はありますか?必要なのは、番号に4または7が含まれていることだけです。
特定の数字が数字に現れる回数のカウントを見つけることがあなたの言いたいことである場合、複雑さは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++;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加