LeetCode 415. Add Strings

public String addStrings(String num1, String num2) {
		if(num2.length() > num1.length()) {
			String temp = new String(num1);
			num1 = num2;
			num2 = temp;
		}
		
		char[] ch1 = num1.toCharArray();
		char[] ch2 = num2.toCharArray();
		int i = ch1.length - 1, j = ch2.length - 1;
		
		while(i >= 0 && j >= 0) {
			ch1[i] = (char) (ch1[i] + ch2[j] - '0');
			i--;
			j--;
		}
		
		i = ch1.length - 1;
		while(i > 0) {
			if(ch1[i] >= 10 + '0') {
				ch1[i - 1] = (char) (ch1[i - 1] + 1);
				ch1[i] = (char) (ch1[i] - 10);
			}
			i--;
		}
		
		StringBuffer sb = new StringBuffer();
		if(ch1[0] >= 10 + '0') {
			sb.append(1);
			ch1[0] = (char) (ch1[0] - 10);
		}
		sb.append(ch1);
		
		return sb.toString();
	}

本题的关键点:

1.选择num1作为长度较长的那个字符串

2.从后往前同时遍历num1和num2,num1 = num1[i] + num2[j]

3.再次从后往前遍历num1,如果num1[i] >= 10,则num1[i] -= 10,num1[i - 1]++;

4.检查num1[0]是否大于等于10,如果是,则前面要进1


ps:这题也有其他类似的题,都是可以举一反三的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值