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