javascript和JQuery焦点图和代码特效大全
当前最流行的开源CMS网站系统大全
当前位置:主页 > 编程开发 > JAVA技术 >

Java解决《Ruby太慢了》的问题

来源:网络编辑:网络发布于:2013-04-30人围观Java问题Ruby

原题是给出两个数值X和Y,统计在这个区间里的回文数,并且要求它们的平方根也是回文数。其中 1<= x <= y < 10 14 

我参考了 C语言解决“Ruby太慢了”问题 的想法,只求出1到10 14之间符合要求的回文数。 

试了一下,用了3秒多。 


public static boolean isPlalindrome(String s) {
 for (int i = 0; i <= s.length() / 2; i++) {
  if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
   return false;
  }
 }
 return true;
}

public static void method(double min, double max) {
 min = Math.sqrt(min);
 max = Math.sqrt(max);
 double y = 0;
 for (double x = Math.ceil(min); x < max; x++) {
  if (x % 10 > 0) {
   y = x * x;
   if (y % 10 > 0) {
    String xStr = String.valueOf((long) x);
    if (isPlalindrome(xStr)) {
     String yStr = String.valueOf((long) y);
     if (isPlalindrome(yStr)) {
      System.out.println(yStr + '(' + xStr + ')');
     }
    }
   }
  }
 }
}

public static void main(String[] args) {
 long t = System.currentTimeMillis();
 method(1d, 100000000000000d);
 System.out.println(System.currentTimeMillis() - t);
}



输出结果

1(1)
4(2)
9(3)
121(11)
484(22)
10201(101)
12321(111)
14641(121)
40804(202)
44944(212)
1002001(1001)
1234321(1111)
4008004(2002)
100020001(10001)
102030201(10101)
104060401(10201)
121242121(11011)
123454321(11111)
125686521(11211)
400080004(20002)
404090404(20102)
10000200001(100001)
10221412201(101101)
12102420121(110011)
12345654321(111111)
40000800004(200002)
1000002000001(1000001)
1002003002001(1001001)
1004006004001(1002001)
1020304030201(1010101)
1022325232201(1011101)
1024348434201(1012101)
1210024200121(1100011)
1212225222121(1101011)
1214428244121(1102011)
1232346432321(1110111)
1234567654321(1111111)
4000008000004(2000002)
4004009004004(2001002)
3865

Java,问题,Ruby,相关的文章
有时间的话来看看IT界的突发事件