class Solution {
public:
string multiply(string num1, string num2) {
string zero = "";//特殊情况
if (num1[] == '' || num2[] == '')
return zero; int len1 = num1.size();
int len2 = num2.size();
char **str = new char*[len2];//建立一个二维的len2*(len1+len2+1)的数组,这里的建立和赋值是教学局了,学习
for (int i = ; i < len2; i++)
{
str[i] = new char[len1 + len2 + ];
memset(str[i], '', len1 + len2);//初始化赋值
str[i][len1 + len2] = '\0';//实际用到的只有len1+len2的长度,但是多出一位赋值‘\0’ } for (int i = len2 - ; i >= ; i--)//这个双重循环目的是用len2里每个值乘len1整体,并保存在二维数组行中
{
for (int j = len1 - ; j >= ; j--)//至于实现,就是模拟乘法中的每一位相乘,从后向前
{
int ans = (num1[j] - '')*(num2[i] - '');
str[i][i + j + ] += ans % ;//注意这里索引位置,要考虑非个位数值乘法,后面是要补零的
str[i][i + j] += ans / ;
if (str[i][i + j + ] > '')
{
str[i][i + j] += ;
str[i][i + j + ] = str[i][i + j + ] - '' + '' - ;//这里之前忘了-1
}
}
} for (int i = ; i < len2 - ; i++)//这里的双重循环目的是将之前保存的,每个位置的乘法结果相加,还是两两相加,所以返回是最后一行
{
for (int j = len1 + len2 - ; j >= ; j--)
{
str[i + ][j] += (str[i][j] - '');
if (str[i + ][j] > '')
{
str[i + ][j - ] += ;
str[i + ][j] = str[i + ][j] - '' + '' - ;
}
}
} int i = ;
while (str[len2 - ][i] == '')//把最后一层开头的0都去掉
{
for (int j = ; j < len1 + len2; j++)
str[len2 - ][i + j] = str[len2 - ][i + j + ];
}
return str[len2 - ];
}
};

分析:

这题我写了半天,不是思想有问题,主要部分第一时间就写好了,就卡在二维数组建立上了,不知道为啥string不方便,只好改用char,用了char初始化还不让我循环初始化,只好用memset,下面的就是忘了对超出'9'的复位后-1,其他就没啥了,感觉这个题思想很简单,考的是编程能力。

leecode第四十三题(字符串相乘)的更多相关文章

  1. leecode第五十三题(最大子序和)

    class Solution { public: int maxSubArray(vector<int>& nums) { int len=nums.size(); )//特殊情况 ...

  2. leecode第三十三题(搜索旋转排序数组)

    class Solution { public: int search(vector<int>& nums, int target) { int len=nums.size(); ...

  3. 《剑指offer》第四十三题(从1到n整数中1出现的次数)

    // 面试题43:从1到n整数中1出现的次数 // 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如 // 输入12,从1到12这些整数中包含1 的数字有1,10,11和12 ...

  4. 代码题(59)— 字符串相加、字符串相乘、打印最大n位数

    1.415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 思路:和链表相加类似,求进位. class Solution { public: string addS ...

  5. 《剑指Offer》题四十一~题五十

    四十一.数据流中的中位数 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中 ...

  6. C Primer Plus_第四章_字符串和格式化输入输出_编程练习

    Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...

  7. NeHe OpenGL教程 第四十三课:FreeType库

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. CTF---Web入门第十三题 拐弯抹角

    拐弯抹角分值:10 来源: cwk32 难度:易 参与人数:5765人 Get Flag:2089人 答题人数:2143人 解题通过率:97% 如何欺骗服务器,才能拿到Flag? 格式:CTF{} 解 ...

  9. <<Effective Java>> 第四十三条

    <<Effective Java>> 第四十三条:返回零长度的数组或者集合,而不是null 如果一个方法的返回值类型是集合或者数组 ,如果在方法内部需要返回的集合或者数组是零长 ...

随机推荐

  1. 解决webgl使用canvas.toDataURL()没有内容的问题

    转的,记录一下,我还没有验证. 这个问题很好解决,就是在获取webgl对象的时候,多传入一个{preserveDrawingBuffer: true},然后在使用canvas.toDataURL()获 ...

  2. Docker MySQL5.5镜像

    定制MySQL的镜像有个很大的难题:mysqld启动之前要初始化数据目录,5.5自带有空账号密码需要初始化. Dockerfile FROM centos # 拷贝需要的安装和MySQL初始脚本 CO ...

  3. redis3.0 主从

    redis3.0 主从 两个实例:6000为主,6001为从. 主实例配置如下: # replication repl-diskless-sync no repl-ping-slave-period ...

  4. Spring Boot 2 (三):Spring Boot 2 相关开源软件

    Spring Boot 2 (三):Spring Boot 2 相关开源软件 一.awesome-spring-boot Spring Boot 中文索引,这是一个专门收集 Spring Boot 相 ...

  5. 利用cgi编程实现web版man手册

    董老师前几天给我们布置了3道作业,第三道作业是cgi程序设计. 题目: web服务器cgi接口功能的实现 要求: 能调用cgi程序并得到返回结果: cgi程序能接受参数并得到返回结果: 使用两种或以上 ...

  6. linux nfs服务配置挂载以及oracle使用nfs存储挂载注意事项

    服务端共享目录 /home/XXX/nfs_shared 172.16.22.0/24(rw,no_root_squash) service nfs restart 常用命令: 查看所有nfs共享目录 ...

  7. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  8. centos7 install rabbtimq

    yum install deltarpm erlang wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.8/rabbitmq- ...

  9. oracle数据库数据库表空间查询及扩充

    1.查询表空间,及表空间的大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...

  10. Python3 tkinter基础 grid(row,column) 窗体的布局

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...