Leetcode每日刷题(十三)

163 阅读1分钟

题目:字符串相加

描述: 给定两个字符串形式的非负整数 num1num1num2num2,计算它们的和。

注意:

  • num1num1num2num2 的长度都小于 51005100.
  • num1num1num2num2 都只包含数字 090-9.
  • num1num1num2num2 都不包含任何前导零。
  • 你不能使用任何內建 BigIntegerBigInteger 库, 也不能直接将输入的字符串转换为整数形式。

解法:进制

public static String addStrings(String num1, String num2) {

	int index = 0;
	int l1 = num1.length();
	int l2 = num2.length();

	int size = Math.max(l1, l2) + 1;
	char[] chars = new char[size];

	int flag = 0;

	while (index < l1 || index < l2) {

		int n1 = index < l1 ? num1.charAt(l1 - 1 - index) - 48 : 0;
		int n2 = index < l2 ? num2.charAt(l2 - 1 - index) - 48 : 0;

		int sum = n1 + n2 + flag;
		chars[size - 1 - index] = (char)(sum % 10 + 48);
		flag = sum >= 10 ? 1 : 0;

		index ++;
	}

	if (flag == 1) {
    	chars[0] = '1';
	} else {
		chars = Arrays.copyOfRange(chars, 1, size);
	}
	return String.valueOf(chars);
}