大数加法--

大数加法

http://www.nowcoder.com/questionTerminal/11ae12e8c6fe48f883cad618c2e81475

笨笨的做法
先反转,最好用StringBuilder
然后找到那个是最长的字符串,就在他身上修改
然后我们遍历比较短的字符串,每次两个字符相加。
大于10 那么给个boolean 让下一次的时候加1
小于10 那么直接把结果赋值到比较长的字符串的该位置
这个时候短的字符串全都加好了
但是可能长的字符串出现99999999
那么前面的boolean为true 就要给这些9999999加上1
加完之后还有可能又是true
那么append一个1

public static String solve (String s, String t) {
        // write code here
        int len1 = s.length();
        int len2 = t.length();
        StringBuilder str1;
        StringBuilder str2;
        int maxlen,minlen;
        if(len1>len2){
            str1 = new StringBuilder(s);
            str2 = new StringBuilder(t);
            maxlen = len1;
            minlen = len2;
        }else{
            str1 = new StringBuilder(t);
            str2 = new StringBuilder(s);
            maxlen = len2;
            minlen = len1;
        }
        //这个时候我们知道str1是最长的
        str1.reverse();
        str2.reverse();
        boolean get = false;
        for(int i=0;i<minlen;i++){
            int temp = str1.charAt(i) - '0';
            temp +=  str2.charAt(i) - '0';
            temp += (get?1:0);
            get = temp>=10?true:false;
            str1.setCharAt(i,Character.forDigit(temp%10,10));
        }


        while(minlen<maxlen&&get==true){
            int temp = str1.charAt(minlen) - '0';
            temp += (get?1:0);
            get = temp>=10?true:false;
            str1.setCharAt(minlen,Character.forDigit(temp%10,10));
            minlen++;
        }
        if(get==true){
            str1.append('1');
        }
        return str1.reverse().toString();
    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务