2017-01-06 3 views
0

저는 3 자리 숫자 2 자리 (100-999)의 제품에서 최대의 palindrome을 찾으려고합니다. 내 접근 방식은 그것이 회문인지 또는 문자열을 사용하지 않는지 확인하는 것이 었습니다. 나는 작은 가치를 얻고있다.왜 이것이 회문이 아닌가?

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

'return new StringBuilder (str) .reverse(). equals (str);이 (가) 잘못되었습니다. – Bohemian

답변

2

또한 p > last 있는지 확인해야합니다.