C# 最大回文

C# 最大回文,c#,sorting,palindrome,C#,Sorting,Palindrome,我已经成功地确定了哪两个数字相乘时会产生C#中的数字回文,但是我需要将乘积从最低到最高排序。有什么办法可以这样做吗 static void LargestPalindrome() { ulong product = 0; ulong compare = 0; for (uint i = 100; i < 1000; i++) { for (uint j = 100; j < 1000; j++) {

我已经成功地确定了哪两个数字相乘时会产生C#中的数字回文,但是我需要将乘积从最低到最高排序。有什么办法可以这样做吗

static void LargestPalindrome()
{
    ulong product = 0;
    ulong compare = 0;
    for (uint i = 100; i < 1000; i++) 
    {
        for (uint j = 100; j < 1000; j++)
        {
            product = i * j;
            StringBuilder value = new StringBuilder(product.ToString());

            //Pass string to reverse
            string value_r = Reverse(value.ToString());

            //Check if Numeric Palindrome
            if(value_r.Equals(value.ToString()) && product>compare)
            {      
                Console.WriteLine("{0} x {1} = {2} in reverse {3}", i, j, value, value_r);
            }
        }
    }
}
静态void最大回文()
{
ulong乘积=0;
ulong比较=0;
对于(uint i=100;i<1000;i++)
{
对于(uint j=100;j<1000;j++)
{
乘积=i*j;
StringBuilder值=新的StringBuilder(product.ToString());
//将字符串传递到反向
字符串值_r=Reverse(value.ToString());
//检查是否有数字回文
if(value_r.Equals(value.ToString())&&product>compare)
{      
WriteLine({0}x{1}={2},反向为{3}),i,j,value,value_r);
}
}
}
}

将数字放入列表中,而不是打印回文。完成循环后,调用list.Sort()。

以下内容就足够了。我只是对回文列表进行了排序,并将它们打印到控制台屏幕上

static void LargestPalindrome()
{
    ulong product = 0;
    ulong compare = 0;
    List<ulong> results = new List<ulong>();
    for (uint i = 100; i < 1000; i++) 
    {
        for (uint j = 100; j < 1000; j++)
        {
            product = i * j;
            StringBuilder value = new StringBuilder(product.ToString());

            //Pass string to reverse
            string value_r = Reverse(value.ToString());

            //Check if Numeric Palindrome
            if(value_r.Equals(value.ToString()) && product>compare)
            {      
                results.Add(product);
            }
        }
    }

    results.Sort();
    foreach (var palindrome in results)
    {
        Console.WriteLine(palindrome);
    }    
}
静态void最大回文()
{
ulong乘积=0;
ulong比较=0;
列表结果=新列表();
对于(uint i=100;i<1000;i++)
{
对于(uint j=100;j<1000;j++)
{
乘积=i*j;
StringBuilder值=新的StringBuilder(product.ToString());
//将字符串传递到反向
字符串值_r=Reverse(value.ToString());
//检查是否有数字回文
if(value_r.Equals(value.ToString())&&product>compare)
{      
结果:添加(产品);
}
}
}
results.Sort();
foreach(结果中的var回文)
{
Console.WriteLine(回文);
}    
}
您也可以使用LINQ:

var palindromes = from i in Enumerable.Range(100, 9900)
                  from j in Enumerable.Range(100, 9900)
                  let product = (i * j)
                  where product.ToString() == new string(product.ToString().Reverse().ToArray())
                  orderby product
                  select product;