今天面试遇到的一道题目

有两个字符串String s1 = “38948598490”;
String s2 = “398758476”;
可能超出了long的范围,要求相加并返回字符串的值。

解答:

    char[] a1 = s1.toCharArray();
	char[] a2 = s2.toCharArray();
	StringBuilder sb = new StringBuilder();
	int len1 = a1.length;
	int len2 = a2.length;
	
	int temp = 0;
	int i;
	for (i = 0; i < len1 && i < len2; i++) {
		int left = Integer.valueOf(a1[len1 - i - 1] + "");
		int right = 0;
		right = Integer.valueOf(a2[len2 - i - 1] + "");
		left = left + right + temp;
		temp = left / 10;
	
		int h = left % 10;
		sb.append(h + "");
	}
	if (len1 != len2) {
		if (i + 1 == len1) {
			for (i = len1; i < len2; i++) {
				int t = Integer.valueOf(a2[len2 - i - 1] + "");
				t = t + temp;
				temp = t / 10;
				
				int h = t % 10;
				sb.append(h + "");
			}
		} else {
			for (i = len2; i < len1; i++) {
				int t = Integer.valueOf(a1[len1 - i - 1] + "");
				t = t + temp;
				temp = t / 10;
				
				int h = t % 10;
				sb.append(h + "");
			}
		}
	}
	
	String s = sb.toString();
	sb = new StringBuilder();
	int l = s.length();
	for (int j = l - 1; j >= 0; j--) {
		sb.append(s.charAt(j) + "");
	}
	return sb.toString();

做的时候没有考虑周到,做错了。

猜你喜欢

转载自blog.csdn.net/zhanglinlove/article/details/84111521