【每日一题】【链表&头插法&ASCII码】【链表&迭代器】2022年1月28日-NC1 大数加法

描述
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

 

 思路:原生链表&头插法节点值

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        //尝试链表+头插法
        LinkedList<Integer> head = new LinkedList<>();
        char[] arrS = s.toCharArray();
        char[] arrT = t.toCharArray();
        int lenS = arrS.length;
        int lenT = arrT.length;
        int leave = 0;
        while(lenS-- > 0 && lenT-- > 0) {
            //char如何转为真正的int-'0'
            int num = leave + Integer.valueOf(arrS[lenS] - '0') + Integer.valueOf(arrT[lenT] - '0');
            head.addFirst(num % 10);
            leave = num / 10;
        }
        while(lenS-- > 0) {
            int num = leave + Integer.valueOf(arrS[lenS] - '0');
            head.addFirst(num % 10);
            leave = num / 10;
        }
        while(lenT-- > 0) {
            int num = leave + Integer.valueOf(arrT[lenT] - '0');
            head.addFirst(num % 10);
            leave = num / 10;
        }
        if (leave > 0) {
            head.addFirst(leave);
        }
        StringBuilder sb = new StringBuilder();
        Iterator iter = head.iterator();
        while(iter.hasNext()) {
            sb.append(iter.next());
        }
        return new String(sb);
    }
}

 

posted @ 2022-01-28 10:33  哥们要飞  阅读(28)  评论(0编辑  收藏  举报