【忙啊忙】- 两个字符串的大整数求和

忙啊忙,博客依旧空空荡荡,从别的地方copy,都懒得弄~~


最近去了某家网络公司面试,最后一道题仔细揣摩一下,描述的不是很清楚,两个整数,是从左边开始加还是右边呢?我只能用程序去“呵呵”了。


上图:


      


当时手写的比较乱,回来重新整理一下:   


public class StringNumberAdd {

	private static boolean sort = true; //字符串是否从左开始相加,false是从左边开始,true是从右边开始
	
	public static void main(String[] args) {
		String num1 = "12345678123123";
		String num2 = "111111111";
		
		if(sort){
			System.out.println(add(num1,num2).reverse());
		}else{
			System.out.println(add(num1,num2));
		}
		
	}
	
	
	public static StringBuilder add(String num1,String num2){
		int a[] = toIntArray(sort,num1,num1.length());
		int b[] = toIntArray(sort,num2,num2.length());
		int count = 0;
		int flag = 0;
		if(a.length>b.length){
			count = a.length;
			flag = 1;
		}else{
			count = b.length;
			flag = 2;
		}
		return fill(flag,a,b,count);
	}
	
	
	public static int[] toIntArray(boolean sort,String num,int length){
		int temp[] = new int[length];
		for (int i = 0; i < num.length(); i++) {
			int number = 0;
			if(sort){
				number = Character.getNumericValue(num.charAt(num.length()-(i+1)));
			}else{
				number = Character.getNumericValue(num.charAt(i));
			}
			temp[i] = number;
		}
		return temp;
	}
	
	
	public static StringBuilder fill(int flag,int a[],int b[],int count){
		int temp = 0;
		StringBuilder sb = new StringBuilder();
		switch (flag) {
		case 1:
			for (int i = 0; i < count; i++) {
				if(i>=b.length){
					temp = a[i];
				}else{
					temp = a[i] + b[i];
				}
				sb.append(temp);
			}
			break;
		case 2:
			for (int i = 0; i < count; i++) {
				if(i>=a.length){
					temp = b[i];
				}else{
					temp = a[i] + b[i];
				}
				sb.append(temp);
			}
			break;
		}
		return sb;
	}
	
}

只要自己按照思路写出意思即可,不必按照上述代码编码,感觉上述代码有些冗余,比如case代码块~~~

考你的思路大致就是:

       字符串拆开成一个 int[ ] 数组,然后按照一位一位的相加。

至于是从左还是右,你也呵呵一下吧~~~想尝试找mathout推荐的工作,考这玩意有鸟用?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值