/**
* 长整形str 相加计算
* @param b
* @param p
* @param 进制 不能出现字母
* @return
*/
private static String add(char [] b,char [] p,int flag) {
int temp = 0;
int total = 0;
List<Integer> ls = new ArrayList<Integer>();
// 将较长的字符整数存入list
if(b.length>p.length)
{
for(int i=0;i<b.length;i++)
{
ls.add(i, Integer.parseInt(b[b.length-1-i]+""));
}
}
else
{
for(int i=0;i<p.length;i++)
{
ls.add(i, Integer.parseInt(p[i]+""));
}
}
int j = 0;
// 相加直到较短的数加完
for(int i=0;i<b.length&&i<p.length;i++)
{
total = Integer.parseInt(b[b.length-i-1]+"")+Integer.parseInt(p[p.length-i-1]+"")+temp;
if(total>=flag)
{
ls.set(i, total%flag);
temp = 1;
}
else
{
ls.set(i,total);
temp = 0;
}
j++;
}
// 加完存在进位
if(temp>0)
{
// 继续与list相加知道进位为0
for(int i=j;i<ls.size();i++)
{
if(ls.get(i) + temp>flag)
{
ls.set(i,(ls.get(i) + temp)%flag);
temp = 1;
}
else
{
ls.set(i,ls.get(i)+temp);
temp = 0;
break;
}
}
// 加完任有进位list进一位
if(temp>0)
{
ls.add(1);
}
}
StringBuilder sb = new StringBuilder();
// 反转list 输出
for(int i=0;i<ls.size();i++)
{
sb.append(ls.get(ls.size()-i-1));
}
return sb.toString();
}
java 实现 不限长整形字符串 相加
最新推荐文章于 2021-06-09 09:28:13 发布