2017-01-06 14 views
0

私は、2桁の3桁の数字(100-999)の製品から最大のパリンドロームを見つけようとしています。私のアプローチは、文字列を使用するかどうかを調べることでした。私は小さな値を得ています。なぜこれが回文ではないのですか?

import acm.program.*; 

public class Palindrom extends ConsoleProgram{ 

    public void run(){ 
     int last = 0; 
     for (int i = 100; i <= 999; i ++){ 
      for (int k = 100; k <= 999; k++){ 
       int p = i*k; 
       String str = "" + p; 
       if(isPalindorme(p, str)){ 
        last = p; 

       } 
      } 
     } 
     println(last); 
    } 

    public boolean isPalindorme(int p, String str){ 
     for (int i = 0; i < str.length()/2; i++){ 
      if (str.charAt(i) != str.charAt(str.length()-1-i)){ 
       return false; 
      } 
     } 
     return true;  
    } 

} 

私は多分間違いは、この行であることを考える:

String str = "" + p; 
+2

デバッガのコードをステップ実行して、期待したことをしていない行を見つけることをお勧めします。ヒント:最大の製品は最も大きな値の1つになる可能性が高いので、トップダウンを開始することもできます。また、i

+1

'return new StringBuilder(str).reverse()。equals(str);'には何も間違っています。 – Bohemian

答えて

2

あなたはまた、p > lastていることを確認する必要があります。

関連する問題