Leetcode 编译器为何不同

问题描述 投票:0回答:1
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编译器才有。

c# compilation console.readline
1个回答
0
投票

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());
© www.soinside.com 2019 - 2024. All rights reserved.