Product 由2个3位数的乘积生成的最大回文值 public静态布尔值isPal(int值) { String temp=String.valueOf(值); int begin=0; int end=(temp.length())-1; 中间整数=(开始+结束)/2; 对于(int count=begin;count=100&&num2>=100) { 如果(isPal(num1*num2)) { 最大数=num1*num2; 打破 } 其他的 { 如果(num1==num2-1) { num2--; } 其他的 { num1--; } } } 返回最大数量; }

Product 由2个3位数的乘积生成的最大回文值 public静态布尔值isPal(int值) { String temp=String.valueOf(值); int begin=0; int end=(temp.length())-1; 中间整数=(开始+结束)/2; 对于(int count=begin;count=100&&num2>=100) { 如果(isPal(num1*num2)) { 最大数=num1*num2; 打破 } 其他的 { 如果(num1==num2-1) { num2--; } 其他的 { num1--; } } } 返回最大数量; },product,palindrome,Product,Palindrome,当我运行它时,它返回回文698896,这是一个回文,但不是由两个3位数字的乘积生成的最高回文。最大回文方法中的else语句在这种样式中基本上是递减的,以保持检查最大数,因为998*998大于999*997,依此类推 999*999->检查: num1减量 998*999->检查: num2减量 998*998->检查 不幸的是,我无法找到正确的最高回文 递减逻辑永远不会检查num1和num2的差值超过1的值。例如,您永远不会检查999*997。您需要执行以下操作: public static b

当我运行它时,它返回回文698896,这是一个回文,但不是由两个3位数字的乘积生成的最高回文。最大回文方法中的else语句在这种样式中基本上是递减的,以保持检查最大数,因为998*998大于999*997,依此类推

999*999->检查: num1减量

998*999->检查: num2减量

998*998->检查


不幸的是,我无法找到正确的最高回文

递减逻辑永远不会检查num1和num2的差值超过1的值。例如,您永远不会检查999*997。您需要执行以下操作:

public static boolean isPal(int value)
{
    String temp = String.valueOf(value);
    int begin=0;
    int end=(temp.length())-1;
    int middle=(begin+end)/2;
    for(int count=begin; count<=middle; count++)
    {
        if(temp.charAt(count)!=temp.charAt(end))
        {
            return false;
        }
        else if(temp.charAt(count)==temp.charAt(end))
        {
            end--;
        }
    }
    return true;
}

public static int largestPalindromeNumber()
{
    int largestNumber=0;
    int num1=999;
    int num2=999;
    while(num1>=100 && num2>=100)
    {
        if(isPal(num1*num2))
        {
            largestNumber=num1*num2;
            break;
        }
        else
        {
            if(num1==num2-1)
            {
                num2--;
            }
            else
            {
                num1--;
            }
        }
    }
    return largestNumber;
}

实际上,对于num1的每一个值,找到形成苍白的最大num2。这是num1迭代中最大的palendrome。然后跟踪您找到的最棒的一个。

这是在
Java
中,对吗?是的,很抱歉我没有添加我原谅的标记。您尝试使用System.out.println查看值在运行时的作用,以确保它是正确的?
int greatestPal = 0;
for(int num1 = 999; num1 > 99; num1--){
  for(int num2 = 999; num2 > 99; num2--){
    int product = num1 * num2;
    if(isPal(product)){
      greatestPal = Math.max(product, greatestPal);
      break;
    }
  }
}