zoukankan      html  css  js  c++  java
  • leetcode400

    public class Solution {
        public int FindNthDigit(int n)
            {
                //StringBuilder sb = new StringBuilder();
                //for (int i = 1; i < int.MaxValue; i++)
                //{
                //    if (sb.Length < n)
                //    {
                //        sb.Append(i);
                //    }
                //    else
                //    {
                //        break;
                //    }
                //}
    
                //var k = sb.Length;
    
                //var s = sb.ToString().Substring(n - 1, 1);
                //var result = Convert.ToInt32(s);
                //return result;
    
                var result = 0;
    
                if (n >= 1 && n <= 9)//0~9
                {
                    var dif = n - 0;
                    var shang = dif;
                    var yu = 0;
    
                    var basic = (0 + shang).ToString();
                    result = Convert.ToInt32(basic.Substring(yu, 1));
                    //9*1
                }
                else if (n >= 10 && n <= 189)//10~99
                {
                    var dif = n - 9;
                    var shang = dif / 2;
                    var yu = dif % 2;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (9 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //89*2
                }
                else if (n >= 190 && n <= 2889)//100~999
                {
                    var dif = n - 189;
                    var shang = dif / 3;
                    var yu = dif % 3;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (99 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //899*3
                }
                else if (n >= 2900 && n <= 38889)//1000~9999
                {
                    var dif = n - 2889;
                    var shang = dif / 4;
                    var yu = dif % 4;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (999 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //8999*4
                }
                else if (n >= 39000 && n <= 488889)//10000~99999
                {
                    var dif = n - 38889;
                    var shang = dif / 5;
                    var yu = dif % 5;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (9999 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //89999*5
                }
                else if (n >= 490000 && n <= 5888889)//100000~999999
                {
                    var dif = n - 488889;
                    var shang = dif / 6;
                    var yu = dif % 6;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (99999 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //899999*6
                }
                else if (n >= 5900000 && n <= 68888889)//1000000~9999999
                {
                    var dif = n - 5888889;
                    var shang = dif / 7;
                    var yu = dif % 7;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (999999 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //8999999*7
                }
                else if (n >= 69000000 && n <= 788888889)//10000000~99999999
                {
                    var dif = n - 68888889;
                    var shang = dif / 8;
                    var yu = dif % 8;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (9999999 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //89999999*8
                }
                else if (n >= 790000000 && n <= int.MaxValue)//100000000~999999999
                {
                    var dif = n - 788888889;
                    var shang = dif / 9;
                    var yu = dif % 9;
                    var next = 0;
                    if (yu > 0)
                    {
                        next = 1;
                    }
                    var basic = (99999999 + shang + next).ToString();
                    if (yu > 0)
                    {
                        result = Convert.ToInt32(basic.Substring(yu - 1, 1));
                    }
                    else
                    {
                        result = Convert.ToInt32(basic.Substring(basic.Length - 1, 1));
                    }
                    //899999999*9
                }
    
                return result;
            }
    }

    https://leetcode.com/problems/nth-digit/#/description

  • 相关阅读:
    禁止页面被复制和禁止右键,一段样式一段JS就行了,无需复杂设定!
    你不知道的DIV+CSS的命名规则
    帝国cms提高网站网页打开速度的手段
    帝国cms网站管理系统之安全设置最优化分享
    渗透测试===使用BURPSUIT暴力破解某网站的手机验证码
    并发、并行、同步、异步、多线程的区别?
    python基础===一行 Python 代码实现并行(转)
    python目前安装的包备份
    jmeter,测登录,要不要过滤掉JS,CSS等请求?感觉过滤掉了压出来的数据就不真实?
    几个网站
  • 原文地址:https://www.cnblogs.com/asenyang/p/6765485.html
Copyright © 2011-2022 走看看