C# - 返回两个字符串整数相加的和的字符串

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程

/*
 * AddIntStr.cs - by Chimomo
 * 
 * Add two integer strings and return the string of their sum.
 * Example: a == "1", b == "23", return "24".
 * Example: a == "-12", b == "120", return "108".
 */

using System;

namespace AddIntStr
{
    internal static class Program
    {
        static void Main()
        {
            Console.WriteLine(AddIntStr("1", "23"));
            Console.WriteLine(AddIntStr("-12", "120"));
        }

        static string AddIntStr(string a, string b)
        {
            int aLen = a.Length;
            int bLen = b.Length;

            bool aNeg = false;
            bool bNeg = false;

            string aAbs = a;
            string bAbs = b;

            if (a[0] == '-')
            {
                aNeg = true;
                aAbs = a.Substring(1, aLen - 1);
            }

            if (b[0] == '-')
            {
                bNeg = true;
                bAbs = b.Substring(1, bLen - 1);
            }

            // Calculate integer value of string.
            int aInt = Str2Int(aAbs);
            int bInt = Str2Int(bAbs);

            if (aNeg)
            {
                aInt = -aInt;
            }

            if (bNeg)
            {
                bInt = -bInt;
            }

            int r = aInt + bInt;
            return Int2Str(r);
        }

        static int Str2Int(string s)
        {
            int r = 0;
            int l = s.Length;
            for (int i = 0; i < l; i++)
            {
                r += (int) ((s[i] - '0') * Math.Pow(10, l - i - 1));
            }

            return r;
        }

        static string Int2Str(int i)
        {
            string r = string.Empty;

            if (i < 0)
            {
                r += "-";
            }

            int iAbs = Math.Abs(i);
            int iLen = 0;
            int t1 = iAbs;
            int t2 = iAbs;

            while (t1 > 0)
            {
                iLen++;
                t1 /= 10;
            }

            for (int j = 0; j < iLen; j++)
            {
                r += ((int) (t2 / (Math.Pow(10, iLen - j - 1)))).ToString();
                t2 %= (int) Math.Pow(10, iLen - j - 1);
            }

            return r;
        }
    }
}

// Output:
/*
24
108

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值