栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

用字符串相加实现加法算式的过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用字符串相加实现加法算式的过程

力扣题 字符串相加 题干

把两个只含数字的字符串,按加法相加,然后输出一个字符串得数

可能会出现两个 “99999999999999999999999999999999999999999999” 相加(即long类型都装不下)

不允许使用 BigInteger

思路

字符串每个字符按位加起来,再拼成字符串

就像加法算式那样,按位加起来

实现

思路代码


public class SumString {
    public static void main(String[] args) {
        String str1 = "894";
        String str2 = "1128";
        SumString s = new SumString();
        String ans = s.sumStrings(str1, str2);
        System.out.println(ans);
    }
    
    public String sumStrings(String str1, String str2) {
        int len1 = str1.length()-1, len2 = str2.length()-1;
        int num1, num2;//str1的数和str2的数
        int ten = 0, num;//十位和个位
        //利用 StringBuffer 和 StringBuilder 的自增特性
        StringBuilder sumStr = new StringBuilder();
        //两个字符同时遍历,当有一个遍历完了,或者是进位为0了,就结束遍历
        while (len1 >= 0 || len2 >= 0 || ten != 0) {
            //接下来从后往前按位取数字
            if (len1 >= 0) {//如果大于0,就获取这个数
                num1 = str1.charAt(len1) - '0';
            } else {//如果等于0,那就等于0
                num1 = 0;
            }
            if (len2 >= 0) {//如果大于0,就获取这个数
                num2 = str2.charAt(len2) - '0';
            } else {//如果等于0,那就等于0
                num2 = 0;
            }
            //两个数相加的和 sum
            int sum = num1 + num2 + ten;
            ten = sum / 10;//获取十位数
            num = sum % 10;//获取个位数
            sumStr.append(num);//把个位加进去
            len1--;
            len2--;
        }
        sumStr.reverse();//因为从后往前加的,所以要翻转一下
        return sumStr.toString();
    }
}

应用代码

public static String addString(String str1,String str2){
    int len1 = str1.length()-1,len2 = str2.length()-1;
    int num1,num2;//来自两个字符串某位上的数
    int ten=0,num=0;//十位和个位
    StringBuffer sb = new StringBuffer();
    while(len1>=0||len2>=0||ten!=0){
        
        num1 = len1>=0 ? str1.charAt(len1)-'0' : 0;
        num2 = len2>=0 ? str2.charAt(len2)-'0' : 0;
        int sum = num1 + num2 + ten;
        ten = sum / 10;
        num = sum % 10;
        sb.append(num);
        len1--;len2--;
    }
    sb.reverse();
    return sb.toString();
}

禁止转载(勿询问)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号