大数加法,大数乘法java版(高频面试题)

大数加法

public class Add {
    public static String addStrings(String num1, String num2){
        int len1=num1.length()-1,len2=num2.length()-1;
        StringBuilder sb=new StringBuilder();
        int carry=0;
        while(len1>=0||len2>=0||carry!=0){
            int a=len1>=0?num1.charAt(len1)-'0':0;
            int b=len2>=0?num2.charAt(len2)-'0':0;
            int sum=carry+a+b;
            sb.append(sum%10);
            carry=carry/10;
            len1--;
            len2--;
        }
        return sb.reverse().toString();
    }

    public static void main(String[] args) {
        String s = addStrings("0", "0");
        System.out.println(s);
    }
}

大数乘法

主要思想:AB*CD=A*C (A*D+B*C) B*D,

如:53*34=15 (29) 12 三个位置的数从后向前完成进位,12即2 进1,29+1=30即0进3,3+15=18即8进1,得1802。

public static String multiply(String s1,String s2){
        if(s1=="0"||s2=="0") return "0";
        int len=s1.length()+s2.length();
        int[] tmp=new int[len];

        for(int i=0;i<s1.length();i++){
            for(int j=0;j<s2.length();j++){
                tmp[i+j+1]+=(s1.charAt(i)-'0')*(s2.charAt(j)-'0');
            }
        }
        int carry=0;
        for(int i=len-1;i>=0;i--){
            int sum=carry+tmp[i];
            tmp[i]=sum%10;
            carry=sum/10;
        }
        int index=0;
        StringBuilder sb=new StringBuilder();
        while(index<len&&tmp[index]==0) index++;
        for(int i=index;i<len;i++) sb.append(tmp[i]);
        return sb.toString();
    }
    public static void main(String[] args) {
        String multiply = multiply("0", "0");
        System.out.println(multiply);
    }

全部评论
m大数加乘法
点赞 回复 分享
发布于 04-21 22:24 浙江

相关推荐

06-17 20:38
已编辑
湖南科技大学 Java
6.17&nbsp;腾讯云一面原以为到六月份就没啥hc了,结果早上就投到了腾讯云的后台开发,然后电话问我下午有没有空面试,太意外了,也太惊喜了,终于迎来我的处女面了面试官看我是大二还是第一次面,问的都比较简答,但我太紧张了,有点胡言乱语,但面试官还是很好的说,&nbsp;总共拷打了70分钟左右,但是没怎么问八股,主要还是在拷打项目,记的不是很清楚,见谅面试过程:自我介绍,手撕:合并区间并输出索引列表,因为我用的c++,所以就是结构体+自定义排序+遍历计网:tcp三次连接,tcp与udp区别,udp为什么不可靠?数据结构:c++与java中的数据结构,c++中vecotr我设置长度为8然后push_back第九个元素会发生什么(因为我用c++写的手撕,面试官就问了写c++&nbsp;stl相关的,以后还是尽量用java写吧避免挖坑)ArrayList与LinkedList,B+树用来做什么的(索引)?数据库中哪里用到了悲观锁和乐观锁,慢sql语句优化项目:第一个项目自己介绍了亮点,然后面试官问如果我前端心跳请求每1s发一个该怎么处理?(我答的redis搭建主从或者哨兵)第二个项目问了如何实现redis缓存高可用(答了针对缓存击穿、穿透、雪崩的几种方案),对于项目描述中说拦截90%请求是怎么知道这个数据的(答的用Jmeter)反问:面试官觉得我想要进入该公司实习需要具备什么能力:面试官说项目+八股+算法搞好面试官对我的评价怎么样和建议:还可以,建议写程序的时候变量名要规范(我手撕的时候有点懵,变量都是a,b,c)大概就是这些了,能不能二面已经无所谓,重要的是经验+1,面试官人真的很好
查看13道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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