题目 颠倒的价牌
方法一
这道题目暴力求解就可以了, 需要注意的是哪些 数字是可以颠倒的, 哪些数字是颠倒后值仍不变的, 再然后细心就可以了.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Price> list1 = new ArrayList<>();
List<Price> list2 = new ArrayList<>();
// 枚举四位数,简单筛选
for (int i = 1000; i < 10000; i++) {
String str = i + "";
// 将赔两百多的放一个集合,赚800多的放到另一个集合
if (!str.contains("3") && !str.contains("4") && !str.contains("7")) {
String str2 = revers(str);
int m = Integer.valueOf(str2);
int cha = m - i;
if (cha > -300 && cha < -200) {
list1.add(new Price(i, cha));
} else if (cha > 800 && cha < 900) {
list2.add(new Price(i, cha));
}
}
}
// 遍历两个集合两两组合,检查是否相加为 558
for (Price p1 : list1) {
for (Price p2 : list2) {
if(p1.b+p2.b == 558)
System.out.println(p1.a);
}
}
}
public static String revers(String str) {
char[] ch = new char[str.length()];
for (int i = ch.length - 1, j = 0; i >= 0; i--, j++) {
char c = str.charAt(i);
if (c == '6') {
ch[j] = '9';
} else if (c == '9') {
ch[j] = '6';
} else
ch[j] = c;
}
return new String(ch);
}
private static class Price {
int a = 0; // 原价
int b = 0; // 差价
public Price(int a, int b) {
super();
this.a = a;
this.b = b;
}
}
}