【无标题】

算法题1@TOC

字符串计算输出

###某团1面最后出的算法题,没完成,大意了,到了饭点,会议室被其他童靴预约拿去吃午饭了,1h的面试就这么草草收场了,ps:hr提前说会比较基础,面试前,楼猪闭关刷了3天corejava jvm io 多线程 结果就问了一丢丢就去问项目和框架了
#####下面的算法写的比较low 记录我的算法之路吧 白天看链表的算法真是看得头大
public static void main(String[] args) {
System.out.println(add(“91323455611”,“21923955617”));
}
private static String add(String a, String b) {
//先以字符的列表读到两个变量 int[] aArray ,bArray
//先以字符的列表读到两个变量 int[] aArray ,bArray
int al=a.length();
int bl=b.length();
char[] longA,shortA,retA ;
int lSize,sSize = 0;
if(al>bl){
longA = a.toCharArray();
shortA = b.toCharArray();
lSize=al;
sSize=bl;
}else{
longA = b.toCharArray();
shortA = a.toCharArray();
lSize=bl;
sSize=al;
}

    //这里需要判断哪个str最长
    int rSize=lSize;
    if(longA[0]+shortA[0]>10&&lSize==sSize){
        //如果不在这里扩展
        rSize++;
    }
    char[] charsR = new char[rSize];
    boolean addFlag=false;
    for(int i=1;i<=lSize;i++){
        int ret ;
        if(i>sSize){
            if(addFlag){
                ret=(longA[lSize-i]-'0')+1;
                addFlag=false;
            }else {
                ret=(longA[lSize-i]-'0');
            }
            charsR[rSize-i]=(char)(ret+48);
            continue;
        }
        //减去'0'是为了让转成int的时候能正常计算,当然 也能在ret-96一样的效果
        ret = (longA[lSize-i]-'0')+(shortA[sSize-i]-'0');
        if(addFlag){
            //需要先+1
            ret++;
        }
        if(ret/10>0){
            addFlag=true;
        }else{
            //复位
            addFlag=false;
        }
        //这里还要还原 不然会打印的是乱码
        charsR[rSize-i]=(char)(ret%10+48);
    }
    if(addFlag&&lSize==sSize){
        charsR[0]='1';
    }
    return new String(charsR);7
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值