首页 > 编程语言 >大数加法 [Java]

大数加法 [Java]

时间:2024-11-04 17:45:33浏览次数:5  
标签:BigInteger Java String 大数 int 加法 字符串 public LinkedList

大数加法

题目链接:牛客 BM86
描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

示例

输入:“1”,“99”
返回值:“100”
说明:1+99=100

思路
方法一:申请两个栈空间和一个标记位,然后将两个栈中内容依次相加。
 与链表相加类似:7、链表相加
方法二:大数类型的题目可以用java的BigInteger直接过。

代码
方法一:

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        // 将两个字符串入栈
        LinkedList<Integer> stack1 = new LinkedList<>();
        LinkedList<Integer> stack2 = new LinkedList<>();
        putDatta(stack1, s);
        putDatta(stack2, t);
        // 标记进位
        int carry = 0;
        String str = "";
        while (!stack1.isEmpty() || !stack2.isEmpty() || carry != 0) {
            int x = stack1.isEmpty() ? 0 : stack1.pop();
            int y = stack2.isEmpty() ? 0 : stack2.pop();
            int sum = x + y + carry;
            // 更新进位
            carry = sum / 10;
            // 拼接字符串
            str = sum % 10 + str;
        }
        return str;
    }

    public static void putDatta(LinkedList<Integer> stack, String s) {
        for (int i = 0; i < s.length(); i++) {
            stack.push(s.charAt(i) - '0');
        }
    }
}

方法二:
用BigInteger是投机取巧的做法,面试时这么干会被面试官喷。

import java.util.*;
import java.math.BigInteger;

public class Solution {
    public String solve (String s, String t) {
        BigInteger b1 = new BigInteger(s);
        BigInteger b2 = new BigInteger(t);
        return b1.add(b2).toString();
    }
}

标签:BigInteger,Java,String,大数,int,加法,字符串,public,LinkedList
From: https://blog.csdn.net/weixin_43777513/article/details/143406497

相关文章

  • 踏上Java之旅:环境搭建指南
    编程爱好者们!今天我要和大家分享一个非常基础但重要的主题——Java环境的搭建。对于初学者而言,正确的环境配置是学习Java的第一步,也是至关重要的一步。接下来,我会手把手教你如何在自己的电脑上配置Java开发环境。第一步:下载并安装JDKJavaDevelopmentKit(JDK)是Java编程语......
  • Java上传文件到远程服务器和浏览器预览图片
    导入maven依赖<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version></dependency>创建一个工具类UploadImageimportcom.jcraft.jsch.Channel;importcom.jcraft.......
  • 初探Java:掌握基础语法的第一步
    大家好,我是一位正在学习Java编程的初学者。在这篇博文中,我想和大家分享我在掌握Java基础语法过程中的学习体会和一些实用的建议。希望我的经历能够帮助那些刚开始接触Java的朋友找到正确的学习路径。首先,为什么选择Java?Java作为一种广泛使用的编程语言,因其跨平台性、健壮性和......
  • JAVA工作经验4-5年一般会面试什么问题?
    JAVA工作经验4-5年面试会问的问题如下:不多bb,来看文档内容面试总结一共有三份,内容涵盖Java基础、JVM、多线程、Mysql、Spring、SpringBoot、SpringCloud、Dubbo、Mybatis、网络、Linux、MQ、Zookeeper、Netty、大数据、算法、项目方面以及设计模式等方面的面试真题。篇幅限......
  • 大数据导论及分布式存储HadoopHDFS入门
    思维导图数据导论数据是什么?进入21世纪,我们的生活就迈入了"数据时代"作为21世纪的新青年,"数据"一词经常出现。数据无时无刻的在影响着我们的现实生活什么是数据?数据又如何影响现实生活?数据:一种可以被鉴别的对客观事件进行记录的符号。简单来说就是:对人类的行为......
  • java代码重构 接口和接口实现类合并
    maven<dependency><groupId>com.github.javaparser</groupId><artifactId>javaparser-core</artifactId><version>3.24.0</version></dependency>代码packagecom.xx;i......
  • 现在的Java面试都会问哪些问题?
    前言金九银十已过,不少人找LZ咨询,问我现在的面试需要提前准备什么?为了造福更多的开发者,也为了让更多的小伙伴通过面试;LZ近期也一直想着怎么才能帮到大家。所以近期在各大渠道整合大厂相关面试题,并结合了我一位现在已经入职阿里(阿里的Offer就是他今年的第15张offer)的朋友一整年......
  • faiss用于大数据量的向量检索
    背景:10亿(Billion级别)的数据应该是一个很大的数据了,尤其是维度在768+级别(还有1024,1536等),这个数据量我做了一个实验,shape为(1kw,768)的array(numpy)占内存为30G(float32格式),如果能降低为float16更好不过,但似乎faiss没有这种方法或者精度有所损失。那么对于5亿级别的数据(vectors),占内存......
  • Java面试高频问题:深入理解 volatile 关键字的作用与实际应用
    在Java并发编程中,volatile是一个常见的关键字,尤其在多线程面试中经常被提及。很多开发者只了解volatile能“防止指令重排序”或者“保证可见性”,但真正理解其应用并正确使用的人并不多。这篇文章将详细介绍volatile的原理、使用场景、实际案例和面试常见问题,帮助你更......
  • 深入理解Java中的数组克隆:浅克隆与深克隆
    深入理解Java中的数组克隆:浅克隆与深克隆在Java编程中,数组的克隆是一个常见的需求,尤其是在处理复杂数据结构时。Java提供了数组的clone方法,但这个方法的行为在不同情况下有所不同。本文将通过一个具体的代码示例,深入探讨Java中数组的浅克隆和深克隆的概念,并解释它们之间的区别......