两数相加

对照leecode两数相加:https://leetcode-cn.com/problems/add-two-numbers/
思路:
1、先把s和t转换成char数组,用i和j两个指针分别指向这两个char数组的尾部,然后从尾到头同时遍历(即从个位开始遍历),把当前位置两数以及进位count相加所得的数n(我自己定义为n方便后续计算)对10取余后加进stringbuilder中,同时计算新的进位count(count = n / 10)。
2、当其中一个char数组遍历完以后,继续遍历另一个数组,重复上述操作,不过此时的n=当前数组元素+count
3、最后还要检查一下count是否为1,如果是1则表明最后还会产生一个进位,要把这个进位也添加进去
4、把stringbuilder中的字符反转后再转换成string进行fan'h

代码如下:

import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        // write code here
       if(s == null || "".equals(s)){
           return t;
       }
       if(t == null || "".equals(t)){
           return s;
       }

        char[] schar = s.toCharArray();
        char[] tchar = t.toCharArray();
        int count = 0;
        StringBuilder builder = new StringBuilder();
        int i = schar.length - 1, j = tchar.length - 1;
        //1、
        while((i >= 0) && (j >= 0)){
            int n = (schar[i] - '0') + (tchar[j] - '0') + count;
            count = n / 10;
            if(n >= 10){
                n = n % 10;
            }
            builder.append(n);
            i--;
            j--;
        }
        //2、
        while(i >= 0){
            int n = (schar[i] - '0') + count;
            count = n / 10;
            if(n >= 10){
                n = n % 10;
            }
            builder.append(n);
            i--;
        }
        while(j >= 0){
            int n = (tchar[j] - '0') + count;
            count = n / 10;
            if(n >= 10){
                n = n % 10;
            }
            builder.append(n);
            j--;
        }
        //3、
        if(count == 1) builder.append(count);
        //4、
        return builder.reverse().toString();
    }
}
全部评论

相关推荐

代码飞升_不回私信人...:啊喂笨蛋算法为什么写查找,线程池怎么放计网上去了,写动态规划真的不会被狠狠地制裁吗oi
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务