대수 를 더 하면 대수 를 곱 한다

대수 를 더 하 다
대수 더하기 의 핵심 사상 은 대응 하 는 위치의 수 를 더 한 후에 계산 결과 의 진 위 를 한 번 더 해서 결 과 를 얻 은 후에 결과% 10 은 현재 위치의 수 를 얻 었 고 결과 / 10 은 진 위 를 얻어 반복 되 었 다.

    public static String add(String s1,String s2) {
        StringBuffer res = new StringBuffer();
        s1 = new StringBuffer(s1).reverse().toString();
        s2 = new StringBuffer(s2).reverse().toString();
        int len1 = s1.length();
        int len2 = s2.length();
        int max = len1>len2?len1:len2;
//         0       ,    
        if(len1 < len2) {
            for (int i = len1; i < len2; i++) {
                s1+="0";
            }
        }else {
            for (int i = len2; i < len1; i++) {
                s2+="0";
            }
        }
        int c = 0;//  
        for (int i = 0; i < max; i++) {
//             0           
            int temp = (s1.charAt(i) - '0') + (s2.charAt(i) - '0') + c;
            int cur = temp%10;//         
            res.append(cur);//          
            c = temp/10;//  
        }
        if(c>0) {//           0,     
            res.append(c);
        }
        return res.reverse().toString();//    
    }

[JAVA ]- , ,


    public String multify(String s1, String s2) {
        int len1 = s1.length();
        int len2 = s2.length();
        int[] res = new int[len1 + len2];//      
        for (int i = 0; i < len1; i++) {
            int n1 = s1.charAt(i) - '0';// 0    0-9     
            for (int j = 0; j < len2; j++) {
                int n2 = s2.charAt(j) - '0';
                res[i + j] += n1 * n2;//           ,        
            }
        }
//             ,  53*34,  res=[15,29,12]
        for (int i = res.length - 1; i > 0; i--) {
            res[i - 1] += res[i] / 10;//     /10     ,     i-1   
            res[i] = res[i] % 10;//  %10           
        }
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < res.length-1; i++) {
            sb.append(res[i]);//        
        }
        return sb.toString();
    }

 

좋은 웹페이지 즐겨찾기