拓展延伸:
有一个整数n,写一个函数f(n,k),返回0到n之间出现的"k"的个数,0<=k<10
my codes as below:
class Program
{
static void Main(string[] args)
{
//Test samples: //Expected results:
Console.WriteLine(TotalCountForNumbersSinceZero(-20,1)); //12
Console.WriteLine(TotalCountForNumbersSinceZero(20, 1)); //12
Console.WriteLine(TotalCountForNumbersSinceZero(0, 1)); //0
Console.WriteLine(TotalCountForNumbersSinceZero(-20, 0)); //3
Console.WriteLine(TotalCountForNumbersSinceZero(20, 0)); //3
Console.WriteLine(TotalCountForNumbersSinceZero(0, 0)); //1
Console.WriteLine(TotalCountForNumbersSinceZero(20, 11)); //0
Console.ReadKey();
}
/// <summary>
/// To count the appearance times of x in numbers from zero to lastNumber
/// </summary>
/// <param name="lastNumber"></param>
/// <param name="x"></param>
/// <returns></returns>
static int TotalCountForNumbersSinceZero(int lastNumber, int x)
{
if (lastNumber < 0)
lastNumber = -lastNumber;
int totalCount = 0;
for (int i = 0; i <= lastNumber; i++)
{
totalCount += CountForSingleNumber(i, x);
}
return totalCount;
}
/// <summary>
/// To count the appearance times of x in number
/// </summary>
static int CountForSingleNumber(int number, int x)
{
if (x > 9 || x < 0)
{
return 0;
}
int count = 0;
do
{
if (number % 10 == x)
{
count++;
}
number = (number - number % 10) / 10;
}
while (number != 0);
return count;
}
}