好的,我知道这不是Project Euler第四个问题最优雅的解决方案,但我为此感到自豪,因为我自己做到了......直到现在。
以下是供参考的问题: http://projecteuler.net/index.php?section=problems&id=4
public class Problem4 {
public void projectEuler4() {
int answer = 0;
for (int i = 1; i < 1000; i++) {
for (int j = 1; j < 1000; j++) {
if (i * j >= answer) {
String stringNum = "" + answer;
String firstHalf = "";
String secondHalf = "";
if (stringNum.length() % 2 == 0) {
for (int k = 0; k < stringNum.length() / 2; k++) {
firstHalf = firstHalf + ("" + stringNum.charAt(k));
}
for (int k = stringNum.length(); k < stringNum.length() / 2; k--) {
secondHalf = secondHalf + ("" + stringNum.charAt(k));
}
if (Integer.parseInt(firstHalf) == Integer.parseInt(secondHalf)) {
answer = i * j;
System.out.println(answer);
}
}
}
}
}
}
}
答案 0 :(得分:1)
此代码for(int k = stringNum.length(); k < stringNum.length()/2; k--)
你的比较搞砸了(&lt;而不是&gt;),你也从stringNum.length()开始,而最后一个字符位于stringNum.length() - 1的位置。
但是,有很多事情你可以改进代码:
"abc"+(""+'d')
,您可以直接"abc"+'d'
Integer.parseInt("123") == Integer.parseInt("123")
,您可以直接"123".equals("123")
答案 1 :(得分:0)
你的第二个循环
for(int k = stringNum.length(); k < stringNum.length()/2; k--)
你正在倒数,所以你的终止条件是错误的