0
点赞
收藏
分享

微信扫一扫

「 每日一练,快乐水题 」258. 各位相加


文章目录

  • ​​🔴力扣原题:​​
  • ​​🟠题目简述:​​
  • ​​🟡解题思路:​​
  • ​​🟢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;
}
};

🔵结果展示:

「 每日一练,快乐水题 」258. 各位相加_力扣

🟢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;
}
};

🔵结果展示:

「 每日一练,快乐水题 」258. 各位相加_i++_02


举报

相关推荐

0 条评论