博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Multiply Strings
阅读量:4073 次
发布时间:2019-05-25

本文共 3528 字,大约阅读时间需要 11 分钟。

Multiply Strings

Given two numbers represented as strings, return multiplication of the numbers as a string.

Note: The numbers can be arbitrarily large and are non-negative.

public class Solution {  public static String multiply(String num1, String num2) {      if(num1.equals("0") || num2.equals("0"))			return "0";		if (hasSign(num1))			num1 = num1.substring(1);		if (hasSign(num2))			num2 = num2.substring(1);		StringBuilder sb = new StringBuilder();		int len_1 = num1.length();		int len_2 = num2.length();		int flag_mul =0;		int tmp_1=0;		if (len_1 <= len_2) {			if (len_1 == 1) {				int tmp = Integer.parseInt(num1);				for (int i = 0; i < len_2; i++) {					tmp_1 = Integer.parseInt(num2.substring(len_2-1-i,len_2-i));					tmp_1 = tmp* tmp_1;					tmp_1 +=flag_mul;					flag_mul = tmp_1 /10;					tmp_1 = tmp_1%10;					sb.append(tmp_1);				}				if(flag_mul != 0 )					sb.append(flag_mul);				sb.reverse();			}else{				sb.append(0);				for(int i=0;i
0;j--){ sb.append(0); } String str_tmp_2 = StrAdd(str_tmp, sb.toString()); sb.setLength(0); sb.append(str_tmp_2); } } } else { if (len_2 == 1) { int tmp = Integer.parseInt(num2); for (int i = 0; i < len_1; i++) { tmp_1 = Integer.parseInt(num1.substring(len_1-1-i,len_1-i)); tmp_1 = tmp* tmp_1; tmp_1 +=flag_mul; flag_mul = tmp_1 /10; tmp_1 = tmp_1%10; sb.append(tmp_1); } if(flag_mul != 0 ) sb.append(flag_mul); sb.reverse(); }else{ sb.append(0); for(int i=0;i
0;j--){ sb.append(0); } String str_tmp_2 = StrAdd(str_tmp, sb.toString()); sb.setLength(0); sb.append(str_tmp_2); } } } return sb.toString(); } public static String StrAdd(String num1, String num2) { StringBuilder sb = new StringBuilder(); if (hasSign(num1)) num1 = num1.substring(1); if (hasSign(num2)) num2 = num2.substring(1); sb.setLength(0); int len_1 = num1.length(); int len_2 = num2.length(); boolean flag_add = false; int tmp = 0; if (len_1 <= len_2) { for (int i = 0; i < len_1; i++) { tmp = Integer .parseInt(num1.substring(len_1 - 1 - i, len_1 - i)) + Integer.parseInt(num2.substring(len_2 - 1 - i, len_2 - i)); if (flag_add == true) { tmp++; flag_add = false; } if (tmp >= 10) { tmp -= 10; flag_add = true; } sb.append(tmp); } for (int i = len_1; i < len_2; i++) { tmp = Integer .parseInt(num2.substring(len_2 - 1 - i, len_2 - i)); if (flag_add == true) { tmp++; flag_add = false; } if (tmp >= 10) { tmp -= 10; flag_add = true; } sb.append(tmp); } if (flag_add == true) { flag_add = false; sb.append(1); } } else { for (int i = 0; i < len_2; i++) { tmp = Integer .parseInt(num1.substring(len_1 - 1 - i, len_1 - i)) + Integer.parseInt(num2.substring(len_2 - 1 - i, len_2 - i)); if (flag_add == true) { tmp++; flag_add = false; } if (tmp >= 10) { tmp -= 10; flag_add = true; } sb.append(tmp); } for (int i = len_2; i < len_1; i++) { tmp = Integer .parseInt(num1.substring(len_1 - 1 - i, len_1 - i)); if (flag_add == true) { tmp++; flag_add = false; } if (tmp >= 10) { tmp -= 10; flag_add = true; } sb.append(tmp); } if (flag_add == true) { flag_add = false; sb.append(1); } } return sb.reverse().toString(); } public static boolean hasSign(String num) { if (num.charAt(0) == '-' || num.charAt(0) == '+') return true; else return false; }}
 

转载地址:http://yvuni.baihongyu.com/

你可能感兴趣的文章
Linux 粘滞位 suid sgid
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>
Winform多线程
查看>>
C# 托管与非托管
查看>>
Node.js中的事件驱动编程详解
查看>>
mongodb管理与安全认证
查看>>
nodejs内存控制
查看>>
nodejs Stream使用中的陷阱
查看>>
MongoDB 数据文件备份与恢复
查看>>
MongoDB数据库插入、更新和删除操作详解
查看>>
MongoDB文档(Document)全局唯一ID的设计思路
查看>>
mongoDB简介
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
程序员最核心的竞争力是什么?
查看>>
linux CPU个数查看
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>