文章目录
- 🔴力扣原题:
- 🟠题目简述:
- 🟡解题思路:
- 🟢C++代码(遍历):
- 🔵结果展示:
- 🟢C++代码(递归):
- 🔵结果展示:
🔴力扣原题:
力扣链接:258. 各位相加
🟠题目简述:
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
🟡解题思路:
1.把int数赋值给string,利用string来切割各位;
2.把各位相加,直至num为个位数;
3.over;
🟢C++代码(遍历):
class Solution {
public:
int addDigits(int num) {
while(true)
{
string str = to_string(num);
int n = str.length();
//cout << "str : " << str << " strlen:" << n << endl;
if(n == 1)
{
//cout << "return :" << num << endl;
return num;
}
else
{
num = 0;
for(int i = 0; i < n; i++)
{
// cout << num << " " << str[i] - '0' << endl;
num += str[i] - '0';
}
}
}
return num;
}
};
🔵结果展示:
🟢C++代码(递归):
class Solution {
public:
int addDigits(int num) {
string str = to_string(num);
int n = str.length();
//cout << "str : " << str << " strlen:" << n << endl;
if(n == 1)
{
//cout << "return :" << num << endl;
return num;
}
else
{
num = 0;
for(int i = 0; i < n; i++)
{
//cout << num << " " << str[i] - '0' << endl;
num += str[i] - '0';
}
return addDigits(num);
}
return num;
}
};
🔵结果展示: