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

 

数字以“01234567891011121314151617181920……”的格式格式序列化到一个字符序列中,求任意第n位的对应数字

方法一:遍历到n
方法二:寻找数的规律 1-9 19个 10-99 2910个 100-999 3100*9 ……

int findnumed(int n) {
             if(n<0) return -1;
             int digits=1;
             while(true) {
                  int number=10;             
                  if(digits==1)
                      number=10;
                  else
                      number=9*(int) (Math.pow(10, digits-1));
                  if(n<number*digits)
                  {    int  <u>t</u>=0;
                      if(digits!=1) t=(int) (Math.pow(10, digits-1));
                      int k=n/digits;
                      int x=digits-n%digits;
                      for(int i=1;i<x;i++)
                           k/=10;
                      return k%10;
                  }
                  n-=digits*number;
                  digits++;
             }             
         }

猜你喜欢

转载自www.cnblogs.com/niliuxiaocheng/p/12593210.html
今日推荐