`
zeyuphoenix
  • 浏览: 57989 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

收集面试题(十一)(两个大数相加)

阅读更多
大数加法
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BigInt b = new BigInt();
		b.add("999999999999444599999999999999999", "99223333333223455559");
	}

	public String add(String a, String b) {
		// 检查输入
		if (!a.matches("\\d+") || !a.matches("\\d+")) {
			return null;
		}
		final int BASE = 10;// 10进制
		int lenA = a.length();// 加数的长度
		int lenB = b.length();// 被加数的长度
		int maxLen, partialSum, carry = 0;// 大数的长度,和,进位
		maxLen = (lenA > lenB) ? lenA : lenB;
		StringBuffer sum = new StringBuffer();
		int temA, temB = 0;
		for (int i = 0; i < maxLen; i++) {
			if (i >= lenA) {
				temA = 0;
			} else {
				temA = Integer.valueOf(a.charAt(lenA - i - 1) - 48);
			}
			if (i >= lenB) {
				temB = 0;
			} else {
				temB = Integer.valueOf(b.charAt(lenB - i - 1) - 48);
			}
			partialSum = temA + temB + carry;
			carry = partialSum / BASE;
			sum.append(partialSum % BASE);
		}
		if (carry == 1)
			sum.append(carry);
		System.out.println(a + " + " + b + " = " + sum.reverse().toString());
		return sum.reverse().toString();
	}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    大数加减,两个有几十位的数字相加想减

    对于两个大数 `a` 和 `b`,我们可以创建一个与 `a` 和 `b` 长度相同的数组来存储每一位,然后从最低位开始逐位相加,并处理进位。 以下是一个简单的算法描述: 1. 初始化两个大数 `a` 和 `b` 为字符串形式,按位...

    大数相加 java

    3. **逐位相加**:遍历两个反转后的数字字符串,对于每一位,执行以下操作: - 获取两位的和,如果超过10,则将进位设置为1,当前位的结果设为和模10。 - 如果有进位,需要将其加到下一位的和上。 4. **处理负数*...

    前端大厂最新面试题-bigNumberSum.docx

    这道“大数相加”面试题目的核心就是如何在JavaScript环境下实现两个大数(超过Number类型所能表示的最大值)的加法运算。这个问题涉及到字符串处理、循环以及进位逻辑等基本编程技巧。 首先,我们需要理解为什么不...

    中级程序员必备面试题.txt

    ### 中级程序员必备面试题解析 ...对于两个数相加超过`long`类型最大值的情况,可以使用`BigInteger`类进行大数运算。 以上内容涵盖了中级程序员面试中常见的知识点和技术细节,旨在帮助准备面试的开发者全面理解...

    C C++笔试面试题(最新整理)

    C 和 C++ 笔试面试题涵盖了广泛的编程概念和技术,以下是对这些题目涉及知识点的详细解释: 1. **函数返回值**:函数的返回值通常取决于其定义的返回类型和执行的操作。例如,如果函数没有明确的返回语句,但包含了...

    python面试题245题(附答案).docx

    以下是根据提供的面试题整理的一些关键知识点: 1. **文件操作**:在Python中,可以通过`open()`函数读取和写入文件,常用模式有'r'(读)、'w'(写)、'a'(追加)。对于JSON格式的数据,可以使用`json`模块进行...

    Java面试题大全

    例如,两个最大的`int`值相加会得到一个负数,这是由于溢出造成的。因此,要实现一个能处理百亿级别计算的计算器,我们需要自定义一个类,比如`BigInteger`,它能存储和操作大整数。 `BigInteger`类通常会有以下...

    前端大厂最新面试题-string.docx

    8. 字符串相加:给定两个字符串,计算它们的和。这个问题可以使用大数运算来解决,时间复杂度为O(n),空间复杂度为O(n)。 9. 交错字符串:给定两个字符串,找到它们的交错字符串。这个问题可以使用动态规划来解决,...

    C语言基础面试题(03-字符串函数).docx

    以上解答了C语言中涉及字符串处理的一些基础面试题,实际编程中,我们需要考虑到边界条件、效率优化和错误处理等因素,确保代码的健壮性和正确性。在面试中,理解这些基本概念并能灵活运用是至关重要的。

    Java面试题(附详细答案-200)

    在Java中,两个short类型的数值相加会自动提升到int类型,所以`s1 = s1 + 1;`会导致编译错误,需要显式转换。而`s1 += 1;`则是合法的,因为Java会自动处理这种类型的提升并进行转换。 8. **char型变量中能不能存贮...

    JavaScript 大数据相加的问题

    首先判断两个传入字符串的长度,取最短的len循环,两者从低位开始对应位相加,同时注意保存进位。在短的数据处理完后,将进位交给较长串的剩余部分处理。 详细实现看一下代码,完整实例见jsfiddle 代码如下: var ...

    google面试题(部分)

    - **问题描述**:找出只包含两个不同ASCII字符的最长子串。 - **知识点**:字符串处理,滑动窗口算法。 #### 14. 最小长度表达式 - **问题描述**:给定一个整数,找到表达该整数的最小长度,其中长度定义为若干个...

    经典笔试面试题汇总(40页word文档有详细答案)

    示例代码中的`f`函数通过两个变量`s1`和`s2`分别存储`f(n-1)`和`f(n-2)`的值,然后在循环中更新它们来计算`f(n)`。 6. **交换两个数**: - 不使用额外内存的交换技巧是通过加减操作完成的,将`a`和`b`的值相加,...

    兰大计算机复试上机

    3. **大数相加**:此题要求处理两个大数的加法运算。考生应设计算法存储和处理大整数,可以使用字符串或数组来表示,然后逐位相加并处理进位。 4. **最长公共子串**:输入两个字符串,找出它们的最长公共子串。考生...

    2013年腾讯实习招聘web前端三轮面试过程总结

    6. **算法**:如最大频率单词、两个大数相加等,体现了候选人的编程思维能力。 7. **数组操作**:判断数组A是否为数组B的子集,涉及到数组遍历和比较。 8. **网络基础**:IP解析、DNS解析等,了解从输入URL到页面...

    朗讯笔试题,青岛朗讯,笔试

    1. **基本算法题**:这类题目通常涉及到逻辑推理,例如给出两个字符串相加的表达式,要求推测每个字母代表的数字。这需要应聘者具备扎实的逻辑分析能力,同时熟悉字符串处理和简单的数学运算。 2. **数据库**:在...

    _leetcode-python.pdf

    需要正确地相加这两个数,并以链表形式返回。 - Median of Two Sorted Arrays: 给定两个排序的数组,找到它们的中位数。解决这个问题的高效算法需要注意时间复杂度。 - Longest Palindromic Substring: 要求找出字符...

    leetcode-cpp刷题

    - 两个链表表示的大数相加。 - 实现思路:模拟加法过程,逐位相加并处理进位。 - **2.2.2 Reverse LinkedList II** - 反转链表的一部分。 - 实现思路:找到反转部分的起始和结束节点,使用迭代或递归的方法进行...

Global site tag (gtag.js) - Google Analytics