leetcode:504. 七进制数

简介: leetcode:504. 七进制数

一、题目:

链接:

504. 七进制数 - 力扣(LeetCode)

 

函数原型:

char* convertToBase7(int num)

二、思路

本题要将十进制数转换为二进制数,只要将十进制num数模7再除7,直到num等于0

每次将模7的结果存储到字符串ans中,存储完后字符串末尾还要加上 '\0' ,由于是逆序存储,因此存储完后需要逆置字符串。

如何将数字转换为字符,请看博客:字符与数字的相互转换_字符和数字之间的转换-CSDN博客

还需要注意,如果num为负数,先将其当作正数去转换,最后在字符串ans末尾加上字符 ‘-’ 即可。

三、代码:

void reserve(char* str)//逆置字符串函数
{
    int len = strlen(str);
    int left = 0;
    int right = len - 1;
    while (left <= right)
    {
        char tmp = str[left];
        str[left] = str[right];
        str[right] = tmp;
        left++; 
        right--;
    }
}
char* convertToBase7(int num) {
    if(num==0)//对于num为0的情况,直接返回"0"即可
    {
        return "0";
    }
    char* ans = (char*)calloc(32, sizeof(char));//申请一块空间,存放字符串
    if (ans == NULL)//判断是否申请成功
    {
        perror("malloc fail");
        exit(-1);
    }
    int i = 0;//下标
    int Num = abs(num);//取num的绝对值
    while (Num > 0)
    {
        ans[i++] = Num % 7 + '0';//将num取模的结果存储到字符串ans中
        Num = Num / 7;//num除7
    }
    if (num < 0)//num为负数
    {
        ans[i++] = '-';//需要在字符串末尾加上负号
        ans[i] = '\0';//字符串末尾加上结束标志\0
    }
    else//num为整数
    {
        ans[i] = '\0';//字符串末尾加上结束标志\0
    }
    reserve(ans);//逆置字符串ans
    return ans;//返回ans
}


目录
相关文章
|
算法
【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】
41 0
【Leetcode -500.键盘行 -504.七进制数】
【Leetcode -500.键盘行 -504.七进制数】
30 0
【刷穿 LeetCode】405. 数字转换为十六进制数 :「进制转换」&「分组换算」
【刷穿 LeetCode】405. 数字转换为十六进制数 :「进制转换」&「分组换算」
|
机器学习/深度学习
【刷穿 LeetCode】470. 用 Rand7() 实现 Rand10() : k 进制诸位生成 + 拒绝采样
【刷穿 LeetCode】470. 用 Rand7() 实现 Rand10() : k 进制诸位生成 + 拒绝采样
|
算法 C++
​LeetCode刷题实战405:数字转换为十六进制数
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
178 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
57 6
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
114 2
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
17 1
|
2月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口