计算123456789等于100【 面试题】
在1-9之间随机添加±符号 让最后的值等于一百。直接看代码吧。
public static void main(String[] args) throws IOException {
Set<String> set = new HashSet<>();
for (int i = 0; i < 10; i++) {
new Thread(()->{
while (true){
StopWatch watch = new StopWatch();
watch.start("计算11种需要多长时间");
String s = numsGenerator();
if (getSum(s)){
set.add(s);
}
if (set.size() == 11){
watch.stop();
System.out.println(watch.getLastTaskName() + " ---- " + watch.getTotalTimeMillis() + "毫秒");
break;
}
}
}).start();
}
}
private static String numsGenerator() {
StringBuilder builder = new StringBuilder("1");
String[] opt = {"+", "-", ""};
Random random = new Random();
for (int i = 2; i <= 9; i++) {
builder.append(String.format("%s%d", opt[random.nextInt(3)], i));
}
return builder.toString();
}
private static boolean getSum(String nums) {
// -? 代表有一次或者0次-
Pattern pattern = Pattern.compile("-?[0-9]+");
int sum = 0;
Matcher matcher = pattern.matcher(nums);
while (matcher.find()) {
int i = Integer.parseInt(matcher.group());
sum += i;
}
return sum == 100;
}