如何反转一个数字,并将其与原始值进行比较

本文关键字:原始 比较 何反转 数字 一个 | 更新日期: 2023-09-27 18:04:32

我试图将两个数字相乘,然后反转答案,然后将原始值与反转值进行比较,看看它们是否相同。在我反转值之后,我如何将其设置回intstring以便我可以比较它们?

int i = 0;
var x = Enumerable.Range(100,999);
var y = Enumerable.Range(100,999);
foreach (var xValue in x)
{
    foreach (var yValue in y)
    {
        i = (xValue * yValue);
        var t = i.ToString();
        var tempt = t.Reverse();
        var temp = new string(tempt);
        if (i.ToString() == temp)
        {
        }
    }
}

如何反转一个数字,并将其与原始值进行比较

就像这样?(一个人真的不应该给出投影仪问题的答案,但这只是问题4,所以管他呢)

    public int SolveProblem004()
    {
        int result = 0;
        for (int a = 999; a >= 100; --a) {
            for (int b = 999; b >= a; --b) {
                int product = a * b;
                if (product <= result) break;
                if (IsPalindromic(product)) { result = product; break; }
            }
        }
        return result;
    }
    public static bool IsPalindromic(int i)
    {
        return i == Reverse(i);
    }
    public static int Reverse(int number)
    {
        if (number < 0) return -Reverse(-number);
        if (number < 10) return number;
        int reverse = 0;
        while (number > 0) {
            reverse = reverse * 10 + number % 10;
            number /= 10;
        }
        return reverse;
    }
int n; //given number
int left = n; 
int rev = 0;
while(left>0)
{
r = left % 10; //take the last number  
rev = rev * 10 + r; //add it to a new number to flip it
left = left / 10; //left = Math.floor(left / 10);  
}

你可以这样做:

int i = 0;
var x = Enumerable.Range(100, 999);
var y = Enumerable.Range(100, 999);
foreach (var xValue in x)
{
    foreach (var yValue in y)
    {
        i = (xValue * yValue);
        char[] number = i.ToString().ToCharArray();
        char[] reversedNumber = i.ToString().ToCharArray();
        Array.Reverse(reversedNumber);
        if (new string(number).Equals(new string(reversedNumber)))
        {
        }
    }
}

如果number与反转的number相同,则进入if循环,反之则忽略。