[Algorithm] 3. Digit Counts

Description

Count the number of k's between 0 and nk can be 0 - 9.

Example

if n = 12, k = 1 in

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

we have FIVE 1's (1, 10, 11, 12)

Answer


    /**
     * @param k: An integer
     * @param n: An integer
     * @return: An integer denote the count of digit k in 1..n
     */
    int digitCounts(int k, int n) {
        // Check every digit from 0 to n.
        int count, temp, i = 0;
        for ( i=0; i<=n; i++ )
        {
            temp = i;
            do
            {
                // Check the ones and tens place respectively for the digits between 10 to 99.
                if ( (temp >= 10) && (temp < 100) ) {
                    if ( (temp/10) == k )   count++;
                    if ( (temp%10) ==k )    count++;
                } else {    // Check the ones place only for other cases.
                    if ( (temp%10) == k )
                        count++;
                }
                
                temp /= 10;
            } while (temp >= 10);
        }

        return count;        
    }

 

 
posted @ 2018-11-06 15:56  jjlovezz  阅读(174)  评论(0编辑  收藏  举报