机试题目1-10题
第三题:明明的随机数问题,根据题意是将输入的数据进行去重和排序,明显是用TreeSet。
第五题:进制转换问题。本来打算一点一点写一个map,进行转换,发现太过麻烦,上网查后,发现有两个方法可以直接转换。
字符串s="0xA",十进制是10;
方法一:Integer.decode(s);即可为10;
decode可以自己分析字符串从而输出对应的10进制,
如:
8进:010=>分析后为 8
10进:10=>分析后为 10
16进:#10|0X10|0x10=>分析后是 16
方法二:
ss=s.substring(2);
Integer.parseInt(ss,16);也可以得到10,第一行代码是将0x去掉,第二行代码parseInt第二个参数16,是说明这个ss字符串代表的是一个16进制的数,返回10进制。
parseInt是解析一个string表示的数的方法,即给一个X进制的数,返回它的十进制表示,比如parseInt("Kona", 27) ;
返回结果为411787。
第六题:质数因子。自己写的办法最后一组一直超时,是因为判断一个数是不是质数的时候一直从小到大判断。而实际上我们判断数 num
是不是质数时,没必要从 2
一直尝试到 num
一样,
此题中的大循环也大可不必写一个到 num
的循环,写到根号num
至于遍历问题,用foreach遍历,代码如下:
第九题:输出不重复的整数。我刚开始用的是hashset,但是发现输出的顺序不是插入的顺序,上网查了下资料发现输出的顺序是随机的,要想维护插入顺序,需要用LinkedHashSet.