题解 | 大数乘法

大数乘法

https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 第一个整数
     * @param t string字符串 第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        int n = s.length()+t.length();
        int[] arr = new int[n];//存计算得的数

        //平时数学计算的逻辑
        for(int i=s.length()-1;i>=0;i--){
            for(int j=t.length()-1;j>=0;j--){
                int x=s.charAt(i)-'0';
                int y=t.charAt(j)-'0';
                int carry=x*y/10;//进位
                int remainder=x*y%10;//余数
                arr[i+j+1]+=remainder;
                if(arr[i+j+1]>=10){
                    carry+=arr[i+j+1]/10;
                    arr[i+j+1]%=10;
                }
                arr[i+j]+=carry;
            }
        }
        //计算结果
        StringBuffer res = new StringBuffer();
        for(int i=0;i<arr.length;i++){
            //去掉前缀0
            if(arr[i]!=0||res.length()!=0){
                res.append(arr[i]);
            }
        }
        //res为空(在上面计算结果的步骤中把所有0去掉了,所以为空),说明为0
        return res.length()==0?"0":res.toString();
    }
}

全部评论

相关推荐

码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
白火同学:只是实习的话,你这份简历应该也差不多了。真要优化的话,因为面实习的话,没有开发经验,面试更重视技术栈水平。 1、重视JavaSE的基础吧,集合、泛型算是比较基础的基础,多线程、反射、JVM内存模型才是基础; 2、技术栈写到具体的点,比如Elasticsearch的使用写到某个点,限制面试官自由发挥,防止问了相关问题最后又答不上,如果真没把握建议不写,降低面试官的心理预期; 3、技术栈不要重复,比如技术栈第二条和第八条可以合并改为“熟悉Redis中间件,包括基本数据结构、缓存策略、持久化机制,了解缓存三剑客及其解决方案,并有相关项目经验。”; 4、项目指标量化,比如“达到xx秒的响应速度”(不过这个就有点偏校招社招的要求了,实习简历不写也无伤大雅)。
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务