青训营X豆包MarsCode 技术训练营第四课 |AI 刷题 二进制之和 题解 | 豆包MarsCode AI刷题

106 阅读3分钟

在本次青训营的活动中,我深刻感受到了AI对我写代码的帮助。它不仅可以帮助我在对题目不能理解是提供解题思路,而且还能为我提供代码提示,最后在运行不通过时还能为我检查编译区的代码告诉我,我的代码究竟是哪里出来问题,大大提高了我的做题效率和质量。以下是我在做题中使用AI工具的实践:

一.案例实践分析

问题描述

小U和小R喜欢探索二进制数字的奥秘。他们想找到一个方法,将两个二进制字符串相加并以十进制的形式呈现。这个过程需要注意的是,他们的二进制串可能非常长,所以常规的方法可能无法处理大数。小U和小R希望你帮助他们设计一个算法,该算法能在保证时间复杂度不超过O(n^2)的前提下,返回两个二进制字符串的十进制求和结果。

答题过程

刚拿到这道题时,我觉得一个二进制相加的问题想来不会很难,但在真的做起来时我发现我想的太简单了,由于我是刚开始学习Java对Java中的很多类还没有接触到,这就导致我用c语言的思维写题很容易就会报错,这时候我就求助了豆包自带的AI工具,我请他帮我分析一下该题的思路,它告诉我:

1.对齐二进制字符串:由于两个二进制字符串的长度可能不同,我们需要将它们对齐,较短的字符串前面补0。

**2.模拟二进制加法:**从最低位(字符串的末尾)开始,逐位相加,并处理进位。

**3.转换为十进制:**将最终得到的二进制字符串转换为十进制形式。

它不但告诉我算法的步骤,它还会告诉我了算法中所提到的一些Java中可以让代码变得简单的方法:

屏幕截图 2024-11-27 172451.png 而这正解决了我对Java还不熟悉的难点。

于是我开始写代码,但我没能写出来,于是我让它在帮我分析一下编译区的代码,它告诉我

屏幕截图 2024-11-27 171335.png

最后在基于AI助手的帮助下,我顺利做出了这道题,正确代码如下:

    public static String solution(String binary1, String binary2) {
        // Please write your code here
        long sum1 = binaryToDecimal(binary1);
        long sum2 = binaryToDecimal(binary2);
        return Long.toString(sum2+sum1);
    }

    public static long binaryToDecimal(String binary){
        long decimal = 0;
        int length=binary.length();
        int power =0;
        for (int i = 0; i < length; i++) {
            if(binary.charAt(length-i-1)=='1'){
                decimal += Math.pow(2, i);
            }
            power++;
        }
        return decimal;
    }

 

二.总结

基于此次AI助手的帮助,我发现AI在对于我这种对Java还不是很熟悉的新手写题时,能起到一个非常大的帮助。豆包自带的AI助手不但可以帮助我们分析题目,还能检查我们的代码,而且平台自带的一些测试用例也能帮助我们检查代码,和AI助手起到了一个很好的相辅相成的作用,总之,在未来我希望我可以借助AI助手学到更多编程知识。