题解 | #大数加法#

大数加法

http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        if(s==null || t==null || s.length() > 100000 || t.length() > 100000) return null;
        //补齐两个字符串长度一样
        char[] schars,tchars;
        StringBuilder st = new StringBuilder();
        if(s.length() > t.length()){
           for(int i = s.length() - t.length();i>0;i--){
               st.append("0");
           }
           st.append(t);
           t = st.toString();
        }else if(t.length() > s.length()){
            for(int i = t.length() - s.length();i>0;i--){
                st.append("0");
            }
            st.append(s);
            s = st.toString();
        }
        schars = s.toCharArray();
        tchars = t.toCharArray();
        int i = schars.length - 1;
        StringBuilder result = new StringBuilder();
        int isThanTen = 0;
        while(i>=0){
            int res = schars[i] + tchars[i] - '0' + isThanTen - '0' ;
            if(res >= 10) {
                result.append(res > 10 ? (i == 0 ? res : res % 10)  : (i == 0 ? "01" : res % 10));
                isThanTen = 1;
            } else {
                result.append(res);
                isThanTen = 0;
            }
            i--;
        }
        return result.reverse().toString();
    }
}
全部评论

相关推荐

拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务