Topic
- Math
Description
https://leetcode.com/problems/base-7/
Given an integer num, return a string of its base 7 representation.
Example 1:
Input: num = 100
Output: "202"
Example 2:
Input: num = -7
Output: "-10"
Constraints:
- − 1 0 7 < = n u m < = 1 0 7 -10^7 <= num <= 10^7 −107<=num<=107
Analysis
方法一:迭代法
方法二:使用库方法
方法三:递归法
Submission
public class Base7 {
//方法一:迭代法
public String convertToBase7(int num) {
StringBuilder sb = new StringBuilder();
boolean negative = num < 0;
num = Math.abs(num);
do {
int shang = num / 7;
int yu = num - shang * 7;
sb.append(yu);
num = shang;
}while(num > 0);
if(negative)
sb.append('-');
return sb.reverse().toString();
}
//方法二:使用库方法
public String convertToBase7_2(int num) {
return Integer.toString(num, 7);
}
//方法三:递归法
public String convertToBase7_3(int n) {
if (n < 0) return "-" + convertToBase7_3(-n);
if (n < 7) return Integer.toString(n);
return convertToBase7_3(n / 7) + Integer.toString(n % 7);
}
}
Test
import static org.junit.Assert.*;
import org.junit.Test;
public class Base7Test {
@Test
public void test() {
Base7 obj = new Base7();
assertEquals("0", obj.convertToBase7(0));
assertEquals("202", obj.convertToBase7(100));
assertEquals("-10", obj.convertToBase7(-7));
assertEquals("-11", obj.convertToBase7(-8));
assertEquals("0", obj.convertToBase7_2(0));
assertEquals("202", obj.convertToBase7_2(100));
assertEquals("-10", obj.convertToBase7_2(-7));
assertEquals("-11", obj.convertToBase7_2(-8));
assertEquals("0", obj.convertToBase7_3(0));
assertEquals("202", obj.convertToBase7_3(100));
assertEquals("-10", obj.convertToBase7_3(-7));
assertEquals("-11", obj.convertToBase7_3(-8));
}
}