鉴于以下情况:

protected bool IsPalindrome(uint x) // Samples: 1221, 456653
{

}

确定输入是否为回文的最佳方法是什么?最初,我通过将输入数字放入数组中,在 for 循环中将其反转并将其分配给临时数组进行比较来尝试数组。然而,索引语法很快变得困惑,所以我决定简单地将 uint 视为字符串。

以下是面试白板情况下的有效解决方案,还是我仍然过于复杂?
protected bool IsPalindrome(uint x)
{
    string givenNum = Convert.ToString(x);
    char[] input = givenNum.ToCharArray();
    Array.Reverse(input);

    string testString = String.Empty;
    foreach (char a in input)
        testString += a;

    if (givenNum == testString)
        return true;
    else
        return false;
}

最佳答案

为了提高效率,您可以执行以下操作以数字方式获得相反的结果并进行比较

protected bool IsPalindrome(uint x)
{
    uint original = x;
    uint reverse = 0;
    while (x > 0)
    {
        reverse *= 10;
        reverse += x % 10;
        x /= 10;
    }

    return original == reverse;
}

关于c# - 从 uint 输入确定回文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43788627/

10-13 07:45