题目
给定一个整数,将其转化为7进制,并以字符串形式输出。
示例 1:
输入: 100
输出: "202"
示例 2:
输入: -7
输出: "-10"
注意: 输入范围是 [-1e7, 1e7] 。
题解
方法1:
class Solution {
public String convertToBase7(int num) {
StringBuilder sb = new StringBuilder();
//判断零
if(num == 0 ){
sb.append("0");
return sb.toString();
}
boolean flag = false;
//判断是否小于零,将小于零的数,转换成大于零的数,统一处理
if(num<0){
num = - num;
flag = true;
}
// 求进制的模板,转换成几进制,就先求余几,然后再除以几
while(num!=0){
sb.append(num%7);
num/=7;
}
// 逆序
sb.reverse();
if(flag) sb.insert(0,"-");
return sb.toString();
}
}
方法2:
还看到一个贼厉害的,一行代码就解决了
https://leetcode-cn.com/problems/base-7/solution/zhi-xing-yong-shi-1-ms-zai-suo-you-java-ti-jiao-10/
class Solution {
public String convertToBase7(int num) {
return num >= 0?Integer.toUnsignedString(num, 7):"-"+Integer.toUnsignedString(num*-1,7);
}
}
虽然厉害但是没懂原理,好像是用了自带的方法?时间有限没往下深入了解。有空学习一下。
StringBuilder:
StringBuilder是一个类,可以用来处理字符串,最简单的用法:
StringBuilder sb=new StringBuilder();
sb.Append("123");
sb.Append("456");
string str=sb.ToString();
最后得到的str字符串的值就是"123456",这种用法要比直接字符串相加效率高,比如:
string s1=“123”;
string s2=“456”;
string str=s1+s2;
得到的结果相同,但在处理大规模的字符串的时候第二种方法效率会变低。