2013-10-26 2 views
0

여기 코드가 있습니다. 코드의 효율성을 높이고 싶습니다. 이 회문 코드의 처리 시간을 제한하십시오.

package palindrome; 
import java.io.*; 
import java.math.BigInteger; 
import java.util.*; 

public class Palindrome { 


    static Stack<Character> ss=new Stack<Character>(); 

    public static void main(String[] args) throws IOException { 
     // TODO code application logic here 


     BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); 

     String s[]=read.readLine().split(","); 

     int min=Integer.parseInt(s[0]); 
     int max=Integer.parseInt(s[1]); 
     int finResult=palindrome(min,max); 
     System.out.println(finResult); 

    } 


    public static int palindrome(int min,int max) 
    { 
     int result=0; 
     for(int i=min; i<=max; i++) 
     { 
      String bin=BigInteger.valueOf(i).toString(2); 
      if(check(bin)) 
      { 
       result+=1; 
      } 

     } 
     return result; 
    } 


    public static String fillStack(String input) 
    { 
     StringBuilder inn=new StringBuilder(); 
     for(int i=0; i<input.length(); i++) 
     { 
      char c= input.charAt(i); 
      if(c!=' ') 
      { 
       ss.push(c); 
       inn.append(c); 
      } 
     } 
     return inn.toString(); 
    } 

    public static String buildReverse() 
    { 
     StringBuilder rev=new StringBuilder(); 

     while(!ss.empty()) 
     { 
      char ch=ss.pop(); 
      rev.append(ch); 
     } 

     return rev.toString(); 
    } 

    public static boolean check(String input) 
    { 
     if(fillStack(input).equalsIgnoreCase(buildReverse())) 
      return true; 
     else 
      return false; 
    } 

} 

내가 (1,1000000)와 같은 입력을 사용

는 내가 제한 할 수있는 방법을 compute.So 시간이 많이 걸립니다

이 코드의 효율성을 개선 할 수있는 방법 그렇지 않으면 time.Or ?

감사합니다.

답변

2

우선, 컴파일을 줄이려는 것이 아니라 런타임이라고 생각합니다. 둘째, 문자열로 서식이 지정된 숫자가 회문인지 확인하려면 이미 생성 된 문자열을 반전하고 역순과 원본을 비교하면됩니다.

https://stackoverflow.com/a/7569370/2055163

http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html#reverse()

+0

좋아, 내가 무엇을 할 수있는 runtime.So을 줄이려? – user2922052

+3

그는 이미 당신의 질문에 대답했습니다. 너 이해하지 못했 니? –