【每日刷题】Day12

这篇具有很好参考价值的文章主要介绍了【每日刷题】Day12。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 67. 二进制求和 - 力扣(LeetCode)

//思路:将两个字符串的内容先逆置,然后分别从头开始遍历,如果当前位置两个字符串内容都为1,则说明要进位,使用carry变量来判断是否进位,动态开辟一块内存ans用于存放求和后每个位置的值

void reserve(char* s)//逆置函数

{

    int len = strlen(s);

    for (int i = 0; i < len / 2; i++)

    {

        char t = s[i];

        s[i] = s[len - i - 1];

        s[len - i - 1] = t;

    }

}文章来源地址https://www.toymoban.com/news/detail-850255.html

char* addBinary(char* a, char* b)

{

    reserve(a);//将a、b字符串逆置

    reserve(b);

    int len_a = strlen(a), len_b = strlen(b);

    int n = fmax(len_a, len_b);//两个字符串中较长的即为循环次数

    int carry = 0;//用于判断是否进位

    int len = 0;//ans下标

    char* ans = (char*)malloc(sizeof(char) * (n + 2));//动态开辟空间,需要多开辟两个因为可能最终会多一个数,并且最后要存放'\0'

    for (int i = 0; i < n; ++i)//循环遍历a、b

    {

        //根据carry的值来判断是否进位,同时考虑进位后的下一位是否进位,如此递推

        carry += i < len_a ? (a[i] == '1') : 0;

        carry += i < len_b ? (b[i] == '1') : 0;

        ans[len++] = carry % 2 + '0';//将当前位置求和后的值记录到ans中

        carry /= 2;//carry只要≥2就说明进了1位,进的1位需要保留到下次循环中加上

    }

    if (carry)//当出了循环后carry还为1的话,说明字符串中的数全部都进了位,并且此时ans中全为0

    {

        ans[len++] = '1';//直接在最后一位数据加上'1'

    }

    ans[len] = '\0';//最后放入'\0'

    reserve(ans);//将数组逆置后返回

    return ans;

}

到了这里,关于【每日刷题】Day12的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言每日一题:11.《数据结构》链表分割。

    题目链接: 1.构建两个新的带头链表,头节点不存储数据。 2.循环遍历原来的链表。 3.小于x的尾插到第一个链表。 4.大于等于x尾插到第二个链表。 5.进行链表合并,注意第二个链表的尾的下一个需要置空防止成环。 6.free两个头之前需要保存新的满足条件的单链表的头。 1.有

    2024年02月14日
    浏览(46)
  • C语言每日一题:13《数据结构》环形链表。

    题目链接: 使用快慢指针利用相对移动的思想: 1,令快指针(fast)速度为2. 2.慢指针(slow)速度为1. 3.以慢指针进入环中开始。 4。假设slow刚刚进入环中fast与它相距N。 如图所示: 1,令快指针(fast)速度为3.M 2.慢指针(slow)速度为1. 3.以慢指针进入环中开始。 4。假设slow刚

    2024年02月14日
    浏览(46)
  • java数据结构与算法刷题-----LeetCode287. 寻找重复数

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 弗洛伊德判圈法,也就是快慢指针判圈法(龟兔赛跑算法),此算法分为两个步骤 判断是否有环,并得到快慢指针相遇

    2024年01月24日
    浏览(43)
  • 数据结构day08(树、算法)

    今日任务: 二叉树: 今日思维导图 链接: 快排:快速排序法(详解)_李小白~的博客-CSDN博客图画挺好啊 常见款:https://www.runoob.com/w3cnote/quick-sort.html  

    2024年02月10日
    浏览(42)
  • java数据结构与算法刷题-----LeetCode766. 托普利茨矩阵

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 这道题只要换一种理解方式,瞬间就会变的很简单。 题目描述是每个元素左上和右下对角线元素都相同。但是,我们发

    2024年01月25日
    浏览(48)
  • java数据结构与算法刷题-----LeetCode667. 优美的排列 II

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 题目要求我们返回一个数组长度为n的数组,必须含有1~n的所有数,并且从左到右,相邻的元素依次相减,它们的差,必

    2024年01月25日
    浏览(52)
  • java数据结构与算法刷题-----LeetCode240. 搜索二维矩阵 II

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 法一:把整个数组遍历一遍,时间复杂度O(m*n) 法二:每一行用二分搜索,那么时间复杂度就是O(m * l o g 2 n log_2{n} l o g

    2024年01月22日
    浏览(61)
  • 数据结构与算法学习(day1)

    (1)我是一个大三的学生(准确来说应该是准大三,因为明天才报名哈哈哈)。 (2)最近就想每天闲着没事也刷些C语言习题来锻炼下编程水平,也一直在思考企业对应届大学生能力的要求,所以经常会想到关于面试的事情。由于我也没实习过,所以我对面试没有一个具象化

    2024年02月10日
    浏览(53)
  • java数据结构与算法刷题-----LeetCode209. 长度最小的子数组

    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完): https://blog.csdn.net/grd_java/article/details/123063846 解题思路 代码:时间复杂度O(n).空间复杂度O(1)

    2024年01月21日
    浏览(54)
  • 数据结构—基础知识(12):二叉树算法补充

    复制二叉树 【算法步骤】 如果是空树,递归结束,否则进行以下操作: 申请一个新结点空间,复制根结点; 递归复制左子树; 递归复制右子树。 计算二叉树的深度 【算法步骤】 如果是空树,递归结束,深度为0,否则进行以下操作: 递归计算左子树的深度记为m; 递归计

    2024年01月25日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包