`
daojin
  • 浏览: 690310 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android 面试题目之一:大整形相加

 
阅读更多
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

 

0
0
分享到:
评论

相关推荐

    c++数据结构实验:多项式相加

    在这个实验中,我们将探讨如何实现多项式相加,这是一个基于数据结构的问题,具体使用了链表来存储多项式。首先,我们需要理解多项式相加的基本概念:两个多项式相加就是将它们的同类项合并,即相同指数的项相加。 ...

    python-leetcode面试题解之第258题各位相加.zip

    LeetCode是一个知名的在线平台,它提供了各种算法题目来帮助开发者提升编程技能,尤其是对于求职面试的准备。 Python作为一门高级编程语言,以其简洁易读的语法和强大的库支持而广受欢迎。在处理算法问题时,Python...

    MisterBooo#LeetCodeAnimation#LeetCode第2号问题:两数相加1

    示例:输入:(2 -&gt; 4 -&gt; 3) + (5 -&gt; 6 -&gt; 4)输出:7 -&gt; 0 -&gt; 8原因:342 + 465 = 807题目解析设立一个表示进位的

    一元多项式相加(c++)

    题目说明: 编写一元多项式加法运算程序。要求用线性链表存储一元多项式(参照课本)。该程序有以下几个功能: 1. 多项式求和 输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc (提示:调用CreatePolyn...

    C++两个一维数组相加求和

    在C++编程中,处理数组是一项基本操作,而数组之间的运算更是常见的任务之一。本问题主要探讨了如何在C++中实现两个一维数组的相加求和。下面将详细阐述这一过程及其涉及的关键知识点。 首先,我们创建了两个一维...

    无限大整数相加减

    本程序的功能是实现无限大的2个整数相加或者相减,供编程初学者参考

    一元多项式相加,用两个链表组织两个一元多项式,将相加的结果保存在前一个链表中。

    本案例介绍了一种使用链表来组织并实现一元多项式相加的方法。具体来说,通过两个链表分别表示两个多项式,然后将这两个多项式的和保存在一个新的链表中,即第一个链表中。 #### 2. 链表结构设计 为了实现这一目标...

    数据结构 多项式相加

    一元多项式相加是通过键盘输入两个形如P0+P1X1+P2X2+…+PnXn 的多项式,经过程序运算后在屏幕上输出他们的相加和。

    GameLoft面试题目及答案

    【GameLoft面试题目解析】 1. 代码执行题 a) `int expr = a++%++b*2;...这是一份关于GameLoft面试题目的解析,涵盖了编程逻辑、Java基础知识、游戏开发相关知识等多个方面,体现了面试者需要掌握的技能和知识。

    微软面试题 连续相加等于500

    这是一道来自微软的面试题,题目要求找出能够连续相加等于500的所有整数序列,并使用C#语言实现。 ### 二、核心算法解析 #### 1. 算法思路 题目中的代码实现了一个算法来寻找所有可能的连续整数序列,使得这些整数...

    C#面试题目内容全面

    根据给定的文件信息,我们可以总结出以下几个关键的IT知识点,主要围绕C#语言的面试题目,涵盖了ASP.NET页面间数据传递、数列规律求解、递归算法以及C#中的委托与事件概念。 ### 1. ASP.NET 页面之间传递值的几种...

    两个一元多项式相加的程序

    两个一元多项式相加的程序是计算机科学中的一种常见问题。本程序的主要功能是将两个一元多项式相加,并输出结果。 定义结点 在本程序中,我们首先定义了一个结点结构体LinkList,用于存储多项式的系数和幂。该...

    Android实现两个数相加功能

    本文实例为大家分享了Android实现两个数相加的具体代码,供大家参考,具体内容如下 要实现如图所示的加法计算器的话,还是比较简单的,下面直接上demo,有不懂的可以留言交流。 1、下面是activity.xml的布局文件 &...

    数据结构线性表一元多项式的表示及相加PPT学习教案.pptx

    在线性表中,一元多项式的表示及相加是数据结构中的一个重要概念。本文将对一元多项式的表示及相加进行详细讲解。 一元多项式的表示 一元多项式的表示可以用一个关于系数的线性表来表示:P = (p0, p1, …, pn)。...

    两个大数相加-字符串实现

    本主题将深入探讨如何通过字符串实现大数相加,这是一种常见的大数处理方法。 一、大数相加的背景与需求 在日常编程中,我们通常使用诸如int、long等基本数据类型来存储和操作数字。然而,当需要处理的数字非常大...

    c++实现大数相加

    大数相加是指将两个或多个大整数相加,得到一个新的大整数。这里的“大整数”是指超出C++标准整数类型范围的整数。 C++中的大数实现 在C++中,我们可以使用字符串来表示大整数,因为字符串可以存储任意长度的数字...

    大整数相加

    C++ 大整数相加代码 C++ 大整数相加代码 C++ 大整数相加代码

    4面字节跳动拿到2-2 Offer,入职就是30K16薪,全靠这份Android知识点PDF大全(csdn)————程.pdf

    本文主要讲述了作者如何通过一份详尽的Android知识点PDF大全成功通过字节跳动的四轮面试,并最终获得30K16薪的Offer。以下是对面试准备及Android相关知识点的详细分析: 1. **背题与基础准备**: - 关注最新的面试...

Global site tag (gtag.js) - Google Analytics