400. Nth Digit

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

Note:
n is positive and will fit within the range of a 32-bit signed integer (n < 231).

Example 1:

Input:
3

Output:
3

 

Example 2:

Input:
11

Output:
0

Explanation:
The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.

求无穷序列里的第n个数字
比如第11个数是数字10里的0

C++(3ms):
 1 class Solution {
 2 public:
 3     int findNthDigit(int n) {
 4         int len = 1 ;
 5         long count = 9 ;
 6         int start = 1 ;
 7         while(n > len * count){
 8             n -= len * count ;
 9             len+=1 ;
10             count *= 10 ;
11             start *= 10 ;
12         }
13         start += (n-1)/len ;
14         string s = to_string(start) ;
15         int res = s[(n-1)%len] - '0' ;
16         return res ;
17     }
18 };

 

 

java(7ms):

 1 class Solution {
 2     public int findNthDigit(int n) {
 3         int len = 1;
 4         long count = 9;
 5         int start = 1;
 6 
 7         while (n > len * count) {
 8             n -= len * count;
 9             len += 1;
10             count *= 10;
11             start *= 10;
12         }
13 
14         start += (n - 1) / len;
15         String s = Integer.toString(start);
16         return Character.getNumericValue(s.charAt((n - 1) % len));
17     }
18 }

 

 
posted @ 2017-11-23 10:09  __Meng  阅读(209)  评论(0编辑  收藏  举报