原题链接:leetcode 504. 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:
- -107 <= num <= 107
思路:
首先需要特判num为0的情况;
其次负数的符号需要单独处理;
进制转换的方法使用 除基取余法, 注意最后的输出要采用逆序输出
c++代码:
class Solution {
public:
string convertToBase7(int num) {
if(num == 0) return "0";
string ans;
// 是否是负数
bool flag = num < 0;
num = abs(num);
while(num > 0){
ans.push_back(num % 7 + '0');
num /= 7;
}
if(flag) ans.push_back('-');
reverse(ans.begin(), ans.end());
return ans;
}
};
复杂度分析:
- 时间复杂度:O(log∣num∣),循环中最多进行log|num|次除法
- 空间复杂度:O(log∣num∣),即为字符串长度,使用reverse()来反转字符串只需要O(1)