これがコードです。コードの効率を改善したいと思います。
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) のような入力を使用すると、計算に時間がかかります。どうすれば制限できますか
または、このコードの効率を改善するにはどうすればよいですか?
ありがとうございました。