代码题(59)— 字符串相加、字符串相乘、打印最大n位数
1、415. 字符串相加
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
思路:和链表相加类似,求进位。
class Solution {
public:
string addStrings(string nums1, string nums2) {
string res;
if(nums1.empty() || nums2.empty())
return res;
int m=nums1.size()-;
int n=nums2.size()-;
int carry=;
while(m>= || n>=)
{
int a = m>= ? nums1[m--]-'' : ;
int b = n>= ? nums2[n--]-'' : ;
int sum = a+b+carry;
res.insert(res.begin(),sum%+'');
carry = sum/;
}
return carry ? ''+res : res;
}
};
2、43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3"
输出: "6"
示例 2:
输入: num1 = "123", num2 = "456"
输出: "56088"
首先我们把每一位相乘,得到一个没有进位的临时结果,如图中中间的一行红色数字就是临时结果,然后把临时结果从低位起依次进位。对于一个m位整数乘以n位整数的结果,最多只有m+n位。
注意:结果中需要去掉前导0,还需要注意结果为0的情况
class Solution {
public:
string multiply(string num1, string num2) {
string res;
if (num1.empty() || num2.empty())
return res;
int n1 = num1.size();
int n2 = num2.size();
vector<int> vec(n1 + n2, );
int k = n1 + n2 - ;
// 计算对应位置相乘
for (int i = ; i<n1; i++)
{
for (int j = ; j<n2; ++j)
vec[k - i - j] += (num1[i] - '') * (num2[j] - '');
}
int carry = ;
for (int i = ; i<(n1 + n2); ++i) // 求进位
{
vec[i] += carry;
carry = vec[i] / ;
vec[i] %= ;
}
int i = k + ;
while (vec[i] == )
i--;//去掉乘积的前导0
if (i < )
return ""; //注意乘积为0的特殊情况
for (; i >= ; i--)
res.push_back(vec[i] + '');
return res; }
};
3、打印最大n位数
输入数字n,顺序打印从1到n位的数,1,2,3.....999
使用大数字符串,全排列递归打印。
void printNum(vector<char> &num)
{
bool flag = true;
for (int i=; i <num.size() ; ++i)
{
if (flag && num[i] != '')
flag = false;
if (!flag)
cout << num[i];
}
cout << " ";
} void maxNum(vector<char> &num, int n, int index)
{
if (index == n - )
{
printNum(num);
return;
}
for (int i = ; i < ; ++i)
{
num[index+] = i + '';
maxNum(num, n, index + );
}
} int main()
{
int n;
while (cin>>n)
{
vector<char> num(n+);
num[n] = '\0';
for (int i = ; i < ; ++i)
{
num[] = i + '';
maxNum(num, n, );
}
cout << endl;
} system("pause");
return ;
}
代码题(59)— 字符串相加、字符串相乘、打印最大n位数的更多相关文章
- [LeetCode]415. 字符串相加、43. 字符串相乘
题目 415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 题解 维护一个temp表示当前两数相加+上一个进位的和. 每次更新结果的一位. 注意终止条件. 最后将 ...
- 【转】String字符串相加的问题
String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...
- String 字符串相加比较
String 字符串相加 对比 public static void main(String[] args) { String a = "helloword"; final Str ...
- leecode刷题(16)-- 字符串转换整数
leecode刷题(16)-- 字符串转换整数 字符串转换整数 描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格 ...
- leecode刷题(13) -- 字符串中的第一个唯一字符
leecode刷题(13) -- 字符串中的第一个唯一字符 字符串中的第一个唯一字符 描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = & ...
- [LeetCode] 大数问题,相加和相乘,题 Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- noi题库 1.7 字符串
前九题 01:统计数字字符个数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字 ...
- String字符串相加的原理
因为String是非常常用的类, jvm对其进行了优化, jdk7之前jvm维护了很多的字符串常量在方法去的常量池中, jdk后常量池迁移到了堆中 方法区是一个运行时JVM管理的内存区域,是一个线程共 ...
- T-SQL字符串相加之后被截断的那点事
本文出处:http://www.cnblogs.com/wy123/p/6217772.html 字符串自身相加, 虽然赋值给了varchar(max)类型的变量,在某些特殊情况下仍然会被“截断”,这 ...
随机推荐
- JavaWeb 之文件下载
1. 下载概述 下载就是向客户端响应字节数据! 将一个文件变成字节数组, 使用 response.getOutputStream() 来响应给浏览器!! 2. 下载要求 两个头一个流 Content- ...
- MySQL中的SQL流程分析简述
分析MySQL中这条语句的整个流程 update table_a set c1=xx where c2=xxx 朋友考我的一个问题在此处列出个人见解 1 客户端连接进来首先进行权限验证 2 验证通过后 ...
- 内置函数:sorted 用法
内置函数——sorted 对list.dict进行排序,Python提供了两个方法 对给定的List L进行排序,方法1: 用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2: ...
- make编译四
书写命令 每条规则中的命令和操作系统 Shell 的命令行是一致的. make 会按顺序一条一条的执行命令, 每条命令的开头必须以[Tab]键开头, 除非,命令是紧跟在依赖规则后面的分号后的.在命令行 ...
- 解决You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgra
直接运行命令:python -m pip install --upgrade pip
- 《Python机器学习》笔记(六)
模型评估与参数调优实战 基于流水线的工作流 一个方便使用的工具:scikit-learn中的Pipline类.它使得我们可以拟合出包含任意多个处理步骤的模型,并将模型用于新数据的预测. 加载威斯康星乳 ...
- 软件磁盘阵列(RAID)
RAID软件磁盘阵列 RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能. ...
- SpringMVC:学习笔记(4)——处理模型数据
SpringMVC—处理模型数据 说明 SpringMVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添 ...
- OJ 1101 谁是中间的那个
前言:主要考察排序用法 sort(cow+1,cow+1+n,cmp);//数组按cmp方法排序 Description 一天,农夫乔伊像往常一样来到了他的牧场,他突然对他的奶牛产奶量产生了兴趣.他想 ...
- python 课堂笔记-for语句
for i in range(10): print("----------",i) for j in range(10): print("world",j) i ...