从1 到 n 中1出现的次数

整数中1出现的次数(从1到n整数中1出现的次数)

http://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6

public class Solution {
    public int NumberOf1Between1AndN_Solution(int n) {
        //根据当前位置为各位1 十位10 百位100等 来计算
        //有如下规则,如果当前位为0,则1的个数仅有高位来计算=高位*当前位
        //***************如果当前位为1,则=高位*当前位+低位+1
 //************** 如果当前位为2-9:则=(高位+1)*当前位
        //i=1开始计算,每次前移一位*10 直到n/i=0停止
        int current = 0;
        int before = 0;
        int after = 0;
        int count = 0;
        int i=1;
        while(n/i != 0){
            current = (n/i)%10; //计算当前位
            before = n/(i*10); //高位
            after = n - (n/i)*i; //低位
            if(current==0)
                count += before*i;
            else if(current==1)
                count = count + before*i + after + 1;
            else if(current > 1)
                count = count + (before+1)*i;
            i=i*10;
        }        
        return count;
    }
}

****重点在于计算1的个数的方法以及计算当前位和高位低位的方法****
全部评论

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
评论
13
收藏
分享
牛客网
牛客企业服务