实习冲刺Day10
算法题
字符串相加
415. 字符串相加 - 力扣(LeetCode)
class Solution {
public:
string addStrings(string num1, string num2) {
int i = num1.size() - 1, j = num2.size() - 1, sum = 0;//定义下标
string str1;//定义一个空字符串用来存返回值
while (i >= 0 || j >= 0 || sum != 0) {
int x = i >= 0 ? num1[i] - '0' : 0;
int y = j >= 0 ? num2[j] - '0' : 0;
int result = x + y + sum;//sum代表进位
str1.push_back('0' + result % 10);//加进字符串末尾
sum = result / 10;//获取进位值
i -= 1;//像前移动
j -= 1;
}
reverse(str1.begin(), str1.end());//翻转字符串
return str1;
}
};
一开始i和j指向字符串末尾下标,有一个sum变量记录当前的进位
依次末尾相加,满10就进一取余,与字符串进行拼接。
最后记得翻转字符串
基础知识
C/C++中数组定义和初始化的方式有哪些?
1.初始化数组中每个值为0
int num[10];
2.自定义数值初始化
int num[5]={1,2,3,4,5};
3.不给数组个数初始化
int num[]={1,2,3,4,5};
数组名字有什么含义?
- 代表整个数组,用sizeof可以求取数组的大小
1.int num[10];
2.cout<<sizeof(num);
3.printf("%p ",&num);
- 代表数组首元素
int num[5]={1,2,3,4,5};
int *p=num;
p=p+1;
fun(num);