400. Nth Digit
400. Nth Digit
初雪之音 发表于10个月前
400. Nth Digit
  • 发表于 10个月前
  • 阅读 62
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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.

Hint. 小心溢出!

Code:

public class Solution {
    public int findNthDigit(int n) {
		int result = -1;

		if (n > 0) {
			int a = 1;
			long b = 9;
			while (n > a * b) {
				n -= a * b;
				a++;
				b *= 10;
			}
			int start = (int) Math.pow(10, a - 1);
			int num = start + (n - 1) / a;
			String str = String.valueOf(num);
			result = str.charAt((n - 1) % a) - '0';
		}

		return result;
	}
}

 

标签: leetcode
共有 人打赏支持
粉丝 37
博文 229
码字总数 129645
×
初雪之音
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: