- find the length of number that the Nth digit comes from
- find the number that contains Nth digit
- find the Nth digit
Note the variable "count" must be long because "count *= 10" could make it overflow.
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++; 10: count *= 10; 11: start *= 10; 12: } 13: start += (n - 1) / len; 14: string s = to_string(start); 15: return s[(n-1) % len] - '0'; 16: } 17: };
No comments:
Post a Comment