package interview; import java.nio.CharBuffer; public class BigNumberAdd { public static void main(String[] args) { String value1 = "155"; String value2 = "555"; String result = add(value1, value2); String result2 = add2(value1, value2); System.out.println("the scan result is " + result); System.out.println("the scan result2 is " + result2); } public static String add2(String strNumber1, String strNumber2) { int str1length = strNumber1.length(); int str2Length = strNumber2.length(); int max = Math.max(str1length, str2Length); char result[] = new char[max + 1]; for (int i = 0; i < max; ++i) { int lastIndex1 = str1length - 1 - i; int lastIndex2 = str2Length - 1 - i; int resultIndex = result.length - 1 - i; int value; if (result[resultIndex] == 0) { value = 0; } else { value = result[resultIndex] - '0'; } if (strNumber1.charAt(lastIndex1) >= '0' && strNumber1.charAt(lastIndex1) <= '9') { if (lastIndex1 >= 0) { value += strNumber1.charAt(lastIndex1) - '0'; } } else { throw new RuntimeException("error"); } if (strNumber2.charAt(lastIndex1) >= '0' && strNumber1.charAt(lastIndex1) <= '9') { if (lastIndex2 >= 0) { value += strNumber2.charAt(lastIndex2) - '0'; } } else { throw new RuntimeException("error"); } int overFlow = value / 10; value = value % 10; result[resultIndex] = (char) ((char) value + (char) '0'); result[resultIndex - 1] = (char) ((char) overFlow + (char) '0'); } if (result[0] == '0') { return new String(result, 1, result.length - 1); } else { return new String(result); } } public static String add(String strNumber1, String strNumber2) { int max = Math.max(strNumber1.length(), strNumber2.length()); int overFlowValue = 0; char result[] = new char[max + 1]; for (int i = 0; i < max; ++i) { int str1length = strNumber1.length(); int str2Length = strNumber2.length(); int index1 = i - (max - str1length); int index2 = i - (max - str2Length); int intValue1 = 0; int intValue2 = 0; if (index1 >= 0) { intValue1 = strNumber1.charAt(index1) - '0'; } if (index2 >= 0) { intValue2 = strNumber2.charAt(index2) - '0'; } int overFlow = intValue1 + intValue2; for (int j = i; j >= 0; --j) { if (overFlow == 0) { break; } if (result[j + 1] == 0) { result[j + 1] = '0'; } int preValue = result[j + 1] - '0'; preValue = preValue + overFlow; overFlow = preValue / 10; preValue = preValue % 10; result[j + 1] = (char) ((char) preValue + '0'); } if (overFlow != 0) { overFlowValue = overFlowValue + overFlow; } } if (overFlowValue != 0) { result[0] = (char) ((char) overFlowValue + '0'); return String.valueOf(result, 0, result.length); } else { return String.valueOf(result, 1, result.length - 1); } } }
密码管理请下载:
http://a.app.qq.com/o/simple.jsp?pkgname=com.wa505.kf.epassword
相关推荐
在这个实验中,我们将探讨如何实现多项式相加,这是一个基于数据结构的问题,具体使用了链表来存储多项式。首先,我们需要理解多项式相加的基本概念:两个多项式相加就是将它们的同类项合并,即相同指数的项相加。 ...
LeetCode是一个知名的在线平台,它提供了各种算法题目来帮助开发者提升编程技能,尤其是对于求职面试的准备。 Python作为一门高级编程语言,以其简洁易读的语法和强大的库支持而广受欢迎。在处理算法问题时,Python...
示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807题目解析设立一个表示进位的
题目说明: 编写一元多项式加法运算程序。要求用线性链表存储一元多项式(参照课本)。该程序有以下几个功能: 1. 多项式求和 输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc (提示:调用CreatePolyn...
在C++编程中,处理数组是一项基本操作,而数组之间的运算更是常见的任务之一。本问题主要探讨了如何在C++中实现两个一维数组的相加求和。下面将详细阐述这一过程及其涉及的关键知识点。 首先,我们创建了两个一维...
本程序的功能是实现无限大的2个整数相加或者相减,供编程初学者参考
本案例介绍了一种使用链表来组织并实现一元多项式相加的方法。具体来说,通过两个链表分别表示两个多项式,然后将这两个多项式的和保存在一个新的链表中,即第一个链表中。 #### 2. 链表结构设计 为了实现这一目标...
一元多项式相加是通过键盘输入两个形如P0+P1X1+P2X2+…+PnXn 的多项式,经过程序运算后在屏幕上输出他们的相加和。
【GameLoft面试题目解析】 1. 代码执行题 a) `int expr = a++%++b*2;...这是一份关于GameLoft面试题目的解析,涵盖了编程逻辑、Java基础知识、游戏开发相关知识等多个方面,体现了面试者需要掌握的技能和知识。
这是一道来自微软的面试题,题目要求找出能够连续相加等于500的所有整数序列,并使用C#语言实现。 ### 二、核心算法解析 #### 1. 算法思路 题目中的代码实现了一个算法来寻找所有可能的连续整数序列,使得这些整数...
根据给定的文件信息,我们可以总结出以下几个关键的IT知识点,主要围绕C#语言的面试题目,涵盖了ASP.NET页面间数据传递、数列规律求解、递归算法以及C#中的委托与事件概念。 ### 1. ASP.NET 页面之间传递值的几种...
两个一元多项式相加的程序是计算机科学中的一种常见问题。本程序的主要功能是将两个一元多项式相加,并输出结果。 定义结点 在本程序中,我们首先定义了一个结点结构体LinkList,用于存储多项式的系数和幂。该...
本文实例为大家分享了Android实现两个数相加的具体代码,供大家参考,具体内容如下 要实现如图所示的加法计算器的话,还是比较简单的,下面直接上demo,有不懂的可以留言交流。 1、下面是activity.xml的布局文件 &...
在线性表中,一元多项式的表示及相加是数据结构中的一个重要概念。本文将对一元多项式的表示及相加进行详细讲解。 一元多项式的表示 一元多项式的表示可以用一个关于系数的线性表来表示:P = (p0, p1, …, pn)。...
本主题将深入探讨如何通过字符串实现大数相加,这是一种常见的大数处理方法。 一、大数相加的背景与需求 在日常编程中,我们通常使用诸如int、long等基本数据类型来存储和操作数字。然而,当需要处理的数字非常大...
大数相加是指将两个或多个大整数相加,得到一个新的大整数。这里的“大整数”是指超出C++标准整数类型范围的整数。 C++中的大数实现 在C++中,我们可以使用字符串来表示大整数,因为字符串可以存储任意长度的数字...
C++ 大整数相加代码 C++ 大整数相加代码 C++ 大整数相加代码
本文主要讲述了作者如何通过一份详尽的Android知识点PDF大全成功通过字节跳动的四轮面试,并最终获得30K16薪的Offer。以下是对面试准备及Android相关知识点的详细分析: 1. **背题与基础准备**: - 关注最新的面试...