鉴于以下情况:
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/