public class Solution {
public int AddDigits(int num) {
string strNum = num.ToString();
while (strNum.Length > 1)
{
int num1 = int.Parse(strNum[0].ToString());
int num2 = int.Parse(strNum[1].ToString());
num1 += num2;
strNum = num1.ToString();
}
Console.WriteLine(strNum);
Console.ReadLine();
return int.Parse(strNum);
}
}
以下代码适用于 leetcode 网站编译器上除零之外的任何数字。当我调用将值 0 传递给 num 的函数时,它根本无法将任何内容返回到输出字段中(基本上只是崩溃了)。如果我拿走 Console.Readline();它与 0 一起工作正常有人知道这是为什么吗?好像只有leetcodes编译器才有。
Leetcode 编译器版本、编译选项、不良代码处理策略等都必须来自 Leetcode。
你的代码不健壮...... 对于单位数整数 0,1,2,...9
numstr
的长度为 1 "0", "1",..."9",因此 int num2 = int.Parse(strNum[1].ToString());
必须发出 (IndexOutOfRange
我假设)例外。
你不迎合负面因素。
您可能会发现第一行中类似的内容非常有用,可以通过将 numstr 强制为至少两位数来让代码快速运行
string strNum = num.ToString("00");
但是要处理所有整数,您必须处理负数和任意数量的数字,例如
var sum = 0;
for (var i = 0; i < numstr.Length; i++)
sum += int.Parse(strNum[i].ToString());