刷算法题时遇到的一些不常用但好用的API
1.需要统计数据,同时希望数据是排序的,可以使用TreeMap结构。
2.按照ASCII,A的ASCII值比a小。而字典排序底层也有基于ASCII,因此无论是字典排序还是ASCII排序,A都在a前面。
3.使用DecimalFormat尝试将浮点数四舍五入取整数,发现如果默认的四舍五入在遇到4.5的时候得到的结果是4而不是5.需要手动设置预估位的进位规则。其他的如5.5,则可以正常进位到6。如下:
猜测是二进制无法直接表示某些数据导致数据存储的时候是x.499999…才导致的数据进位问题。
float num=4.5f;
DecimalFormat format=new DecimalFormat("0");
System.out.println("不手动指定模式:"+format.format(num));
DecimalFormat format1=new DecimalFormat("0");
format1.setRoundingMode(RoundingMode.HALF_UP);//少了这行代码大部分情况下也能正常四舍五入
System.out.print("手动指定模式:"+format1.format(num));
DecimalFormat 是java.text包下面的,记得导包。如果觉得麻烦,可以使用java.math包下面的Math.round()方法。默认就是四舍五入。
4.需要进制转换时,可以使用Integer.toString(十进制数据,需要转换的进制);来转换成对应进制的字符串。
需要n进制转十进制时,可以使用Integer.parseInt(字符串,进制);
5.字符串并没有直接将字符串反转的API,list有,StringBuilder也有。
6.遇到按照字典顺序排序需要传入比较器的时候,记住字符串不能使用大于小于来比较,需要使用compareTo方法
7.遇到很像动规,但有没法同时考虑两边的时候,可以先只考虑一边,有可能需要两边分别算然后再合在一起。
8.需要判断一个数是否是质数(素数),可以通过从2开始一直除除到不能除再尝试除3,一直到i(i*i<该数)。这样就可以算出该数是否是质数。
9.实际笔试中,一些比较难的算法题,想要写出适用于全部场景的代码会比较难,这个时候可以考虑根据场景去写某些场景的结果,这样可以确保能获取一定数量的分。
原文地址:https://blog.csdn.net/weixin_43975276/article/details/143961035
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!