在本次青训营的活动中,我深刻感受到了AI对我写代码的帮助。它不仅可以帮助我在对题目不能理解是提供解题思路,而且还能为我提供代码提示,最后在运行不通过时还能为我检查编译区的代码告诉我,我的代码究竟是哪里出来问题,大大提高了我的做题效率和质量。以下是我在做题中使用AI工具的实践:
一.案例实践分析
问题描述
小U和小R喜欢探索二进制数字的奥秘。他们想找到一个方法,将两个二进制字符串相加并以十进制的形式呈现。这个过程需要注意的是,他们的二进制串可能非常长,所以常规的方法可能无法处理大数。小U和小R希望你帮助他们设计一个算法,该算法能在保证时间复杂度不超过O(n^2)的前提下,返回两个二进制字符串的十进制求和结果。
答题过程
刚拿到这道题时,我觉得一个二进制相加的问题想来不会很难,但在真的做起来时我发现我想的太简单了,由于我是刚开始学习Java对Java中的很多类还没有接触到,这就导致我用c语言的思维写题很容易就会报错,这时候我就求助了豆包自带的AI工具,我请他帮我分析一下该题的思路,它告诉我:
1.对齐二进制字符串:由于两个二进制字符串的长度可能不同,我们需要将它们对齐,较短的字符串前面补0。
**2.模拟二进制加法:**从最低位(字符串的末尾)开始,逐位相加,并处理进位。
**3.转换为十进制:**将最终得到的二进制字符串转换为十进制形式。
它不但告诉我算法的步骤,它还会告诉我了算法中所提到的一些Java中可以让代码变得简单的方法:
而这正解决了我对Java还不熟悉的难点。
于是我开始写代码,但我没能写出来,于是我让它在帮我分析一下编译区的代码,它告诉我
最后在基于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助手学到更多编程知识。