LeeCode504. 七进制数
给定一个整数 num
,将其转化为 7 进制,并以字符串形式输出。
示例 1:
输入: num = 100 输出: "202"
示例 2:
输入: num = -7 输出: "-10"
提示:
-107 <= num <= 107
答案:
char* convertToBase7(int num) { // LeeCode504.七进制数char* res = (char*)malloc(15 * sizeof(char)); // 15个char应该是足够表示的了if (!res) return NULL;int len = 0;if (num == 0) {res[0] = '0';res[1] = '\0';return res;}if (num < 0) {res[len++] = '-';num = -num;}for (;num; num /= 7) {int rest = num % 7;// rest是由低位到高位的顺序,但是不方便表示,先放在高位,一会再反转。res[len++] = '0' + rest;}res[len] = '\0';if (res[0] != '-') {// 反转[0 , len - 1]索引处的字符int mid = (len - 1) >> 1;for (int i = 0; i < mid + 1; i++) {// 交换i 和 len - 1 - i索引处的字符int temp = res[i];res[i] = res[len - 1 - i];res[len - 1 - i] = temp;}}else {// 负数,反转[1 , len - 1]索引处的字符int mid = len >> 1;for (int i = 1; i < mid + 1; i++) {// 交换i 和 len - i索引处的字符int temp = res[i];res[i] = res[len - i];res[len - i] = temp;}}return res;
}
测试代码:
void testLeeCode504(void) { // LeeCode504.七进制数char* res = convertToBase7(100);printf("%d的7进制数为:%s\n", 100, res);free(res);
}
打印:
ok. 提交到LeeCode:
ok.