504. 七进制数——【Leetcode每日一题】
504. 七进制数
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。
示例 1:
输入: num = 100
输出: “202”
示例 2:
输入: num = -7
输出: “-10”
提示:
- −107<=num<=107-10^7 <= num <= 10^7−107<=num<=107
思路:数学
代码:(Java、C++)
Java
import java.util.ArrayList;
import java.util.List;public class ConvertToBase7 {public static void main(String[] args) {// TODO Auto-generated method stubint num = -7;System.out.println(convertToBase7(num));}public static String convertToBase7(int num) {if(num == 0) {return "0";}StringBuilder str = new StringBuilder();boolean flag = num > 0;//标记是正还是负数if(!flag) {num = -num;}while(num >= 7) {str.append(num % 7);num /= 7;}str.append(num);if(!flag) {str.append("-");}return str.reverse().toString();}
}
C++
#include<iostream>
using namespace std;
#include<string>string convertToBase7(int num) {if (num == 0) {return "0";}string str;bool flag = num > 0;//标记是正还是负数if (!flag) {num = -num;}while (num >= 7) {str.append(to_string(num % 7));num /= 7;}str.append(to_string(num));if (!flag) {str.append("-");}reverse(str.begin(),str.end());return str;}int main() {int num = -7;cout << convertToBase7(num) << endl;system("pause");return 0;
}
运行结果:
复杂度分析:
- 时间复杂度:O(log∣n∣)O(log∣n∣)O(log∣n∣)
- 空间复杂度:O(log∣n∣)O(log∣n∣)O(log∣n∣)
注:仅供学习参考, 如有不足,欢迎指正!
题目来源:力扣。