-
------------------------------------------------------------------------------------------------------------------
(基础练习第二题就难住了 QAQ)
这道题的限制比较多,因为最开始说的是十六进制数的长度不超过100000,
而long类型才十九位,肯定不能用系统自带的进制转换方法,需要自己写
------------------------------------------------------------------------------------------------------------------
算法
1 import java.util.*;2 public classMain{3 public static voidmain(String[] args) {4 Scanner sc = newScanner(System.in);5 int n =sc.nextInt();6 String[] sts = newString[n];7 for(int i=0;i
27 k=0;28 for(int i=k;i
要注意小细节,十六进制每一位 对应4位二进制数,八进制对应3位二进制数,十六进制生成二进制后,
在转化八进制前,要查看长度是不是三的倍数,如果不是,则用0补齐.之后在转化八进制开始要判断
开头的三个是不是"000"的形式,如果是则不算在八进制数里.
1 int len_strBin =strBinary.length();2 if(len_strBin%3==1) strBinary = "00"+strBinary;3 if(len_strBin%3==2) strBinary = "0"+strBinary;4 String strOctal = toOctal(strBinary);
做好这类题目要学会去发现什么是变的 什么是不变的 不要试图全部用算法去实现,这样只会事倍功半.
StringBuffer适合定义一个经常变的字符串变量,使用StringBuilder 效率更高效
熟练使用charAt,append,substring方法.