今日简单题:https://leetcode-cn.com/problems/base-7/
一开始看到题目觉得也太简单了吧,就是不断除以7,把余数拿去乘以10的n次方。
再仔细看一下,题目要求以String类型输出,其实直接把余数拼接到字符串的尾部就好了。
由于String是不可变对象,这里就要引入StringBuffer。
感兴趣可以看这里:https://www.runoob.com/java/java-stringbuffer.html
题目易错点在于:
- num需要判断0和负数的情况,开始我想的是直接把num存在另一个int中,到最后写个if else判断,后来看了答案,发现前面就直接用Boolean存储判断结果,更节省空间;
- 最后的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();
}
}