zoukankan      html  css  js  c++  java
  • 43. 字符串相乘

    43. 字符串相乘

    package 字符串;
    
    
    public class 字符串相乘 {
        public static void main(String[] args) {
            String num1 = "123";
            String num2 = "456";
            字符串相乘 o = new 字符串相乘();
            System.out.println(o.addString(num1, num2));
            System.out.println(o.multiply(num1, num2));
        }
    
    
        // 利用乘法竖式的思想,先用num2的个位和num1相乘,先用num2的十位和num1相乘
        // 最后补零相加
        public String multiply(String num1, String num2) {
            if (num1.equals("0") || num2.equals("0")) {
                return "0";
            }
            String s = null;
            String result = null;
            for (int i = num2.length() - 1; i >= 0; i--) {
                int k = num2.charAt(i) - '0';
                StringBuilder sb = new StringBuilder();
                int carray = 0;
                // 补0
                for (int j = 0; j < num2.length() - 1 - i; j++) {
                    sb.append(0);
                }
                for (int j = num1.length() - 1; j >= 0; j--) {
                    int q = num1.charAt(j) - '0';
                    int mul = k * q + carray;
                    carray = mul / 10;
                    mul = mul % 10;
                    sb.append(mul);
                }
                if (carray != 0) {
                    sb.append(carray);
                }
                s = sb.reverse().toString();
                result = addString(result, s);
            }
            return result;
        }
    
        // 两个字符串相加
        // "123"
        // "4567"
        public String addString(String result, String s) {
            if (result == null) {
                return s;
            }
            if (s == null) {
                return result;
            }
            StringBuilder sb = new StringBuilder();
            int i = result.length() - 1;
            int j = s.length() - 1;
            int carray = 0;
            while (i >= 0 || j >= 0 || carray != 0) {
                int m = i >= 0 ? result.charAt(i) - '0' : 0;
                int n = j >= 0 ? s.charAt(j) - '0' : 0;
                int sum = (m + n + carray) % 10;
                carray = (m + n + carray) / 10;
                sb.append(sum);
                i--;
                j--;
            }
            return sb.reverse().toString();
        }
    
    
    }

    。。

  • 相关阅读:
    ⑨.tomcat性能优化
    ⑧.tomcat安全优化
    Nginx.HSTS
    https证书auto
    ⑦.tomcat 常见故障
    ⑨mvstat
    ⑥.tomcat监控
    ⑥.tomcat多实例
    ⑤.tomcat的三种工作模式
    ④.tomcat配置文件server.xml
  • 原文地址:https://www.cnblogs.com/guoyu1/p/15633066.html
Copyright © 2011-2022 走看看