问题描述: 十进制化7进制(范围:-10000000-10000000)
思路:
这个在网上找的十进制化n进制的方法,例如n=4. 方法是原数字一直除以4,直到商小于4停止。把最后的商+倒序输出余数连起来念就是得到的4进制数. 7进制同理
既然是倒叙输出,我们可以借助stack,也可以不用(随过程添加)
代码如下:
class Solution {
public String convertToBase7(int num) {
//keep original data
int original=num;
//step1: make num>=0
num=Math.abs(num);
//step2: keep track of remainder using a stack
Stack<Integer> stack=new Stack<>();
int r=0;
int q=num;
while(q>=7){
r=q%7;
stack.push(r);
q=q/7;
}
stack.push(q);
//pop element from stack
String ans="";
while(!stack.isEmpty()){
ans=ans+Integer.toString(stack.pop());
}
if(original>=0){
return ans;
}
else{
return "-"+ans;
}
}
}
时间复杂度O(logn), 具体来说是以7为底n的对数,n是要求转化的数的绝对值