数字序列中某一位的数字
题目
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数求任意位对应的数字。
思路
逐一枚举数字,计算每个数字的位数相加,效率太低。
观察规律:
个位数的个数一共有10个,即0~9,共占了10*1位数字;
两位数的个数一共有90个,即10~99,每个数字占两位,共占了90*2位数字;
……
m位数的个数一共有910^(m-1)个,每个数字占m位,占了910^(m-1)*m位数字。
判断第n个对的数字是属于几位数,再从几位数中进行寻找。
测试用例
功能测试(输入19、1000等)
边界值测试(输入0、1等)
java代码
1 | /** |