您的位置:首页 > 职场人生

面试题:数字序列中某一位的数字

2018-02-01 16:18 176 查看
数字以0123456789101112131415····的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。

思路:利用进位缩小范围。

int digitAtIndex(int index)

{

 if(index<0)

 return -1; 

int
digts=1;

 while(true)

{

 int
numbers=countOfIntegers(digits);

 if(index<numbers*digits)

 return digitAtIndex(index,digits);

 index-=digits*numbers;

digits++;
}

return -1;
}

int countOfIntegers(int digits)

{

 if(digits==1)

 return 10;

 int count=(int)std::pow(10,digits-1);

return 9*count;

}

int digitAtIndex(int index,int digits)

{

 int number=beginNumber(digits)+index/digits;

int indexFromRight=digits-index%digits;

for(int i;i<indexFromRight;i++)

 number/=0;

 return number%10;

}

int beginNumber(int digits)

{

 if(digits==1)

 return 0;

 return (int)std::pow(10,digits-1);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐