晚上回家,同学给出了两个题目:一个用java语言写个方法,输出a,b,c,d这四个字母的所有组合,苦思良久,又综合各种意见(总有高人指点),写了如下一个:(不得不感叹递归的力量,可惜我总是对递归不敏感
public static void main(String[] args) {
// TODO Auto-generated methodstub
String str = "abcd";
char[] chars = str.toCharArray();
invoke("", chars);
}
private static void invoke(final String str, final char[] chars) {
if (str.length() == chars.length) {
System.out.println(str);
return;
}
for (int i = 0; i < chars.length; i++) {
String data = String.valueOf(chars[i]);
if (str.indexOf(data) == -1) {
invoke(str + data, chars);
}
}
}
哎,递归这个东西,只可意会不可言传。。你懂得。
另外一个是判断对数,就是判断是否是121,1221,2332这种正反看都一样的数字,一开始想偏差了,想取余数之类的东西,后来公交车上一琢磨,StringBuffer就可以解决:
public static void main(String[] args) {
// TODO Auto-generated methodstub
invoke(121);
}
private static void invoke(final int k) {
String str = k + "";
StringBuilder sb = new StringBuilder(str);
sb = sb.reverse();
if (k - Integer.parseInt(sb.toString()) == 0) {
System.err.println("YES");
} else {
System.err.println("NO");
}
}