2022-03-07 「504. 七进制数」

今日简单题:https://leetcode-cn.com/problems/base-7/
一开始看到题目觉得也太简单了吧,就是不断除以7,把余数拿去乘以10的n次方。
再仔细看一下,题目要求以String类型输出,其实直接把余数拼接到字符串的尾部就好了。
由于String是不可变对象,这里就要引入StringBuffer。

三者继承关系

感兴趣可以看这里:https://www.runoob.com/java/java-stringbuffer.html

题目易错点在于:

  1. num需要判断0和负数的情况,开始我想的是直接把num存在另一个int中,到最后写个if else判断,后来看了答案,发现前面就直接用Boolean存储判断结果,更节省空间;
  2. 最后的StringBuffer要转成String返回,同时由于字符串append都是在结尾添加,所以要利用reverse()方法做反转。

最后贴下自己的答案:

class Solution {
    public String convertToBase7(int num) {
        if (num == 0) {
            return "0";
        }
        Boolean flag = num < 0;
        num = Math.abs(num);
        StringBuffer ans = new StringBuffer();
        while (num > 0) {
            ans.append(num%7);
            num /=7;
        }
        if (flag) {
            ans.append("-");
        }
        return ans.reverse().toString();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容