大厂面试题(利用JAVA写一到九求和算法)
【摘要】 大厂面试题(利用JAVA写一到九求和算法)
求123456789 字符串1…9 之间不改数字位置随机±要求表达结果和为100,写出这样表达式
package demo;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.regex.Pattern;
/**
* @author yeqv
* @program A2
* @Classname a3
* @Date 2022/1/13 17:17
* @Email w16638771062@163.com
*/
public class a3 {
public static void main(String[] args) {
//定义一个集合
Set<String> set = new HashSet<String>();
int index = 0;
while (true) {
//定义一个字符类型的数组
String[] s1 = {"", "+", "-"};
//实例化一个随机生成器对象
Random rand = new Random();
//实例化一个字符串类型的构造器对象第一位是字符串“1”
StringBuilder sbu = new StringBuilder("1");
//定义一个循环,最大数是9
for (int i = 2; i <= 9; i++) {
//向字符串构造器“sbu”中随机插入数组s1中的一个字符串
sbu.append(s1[rand.nextInt(s1.length)]);
//向构造器中插入当前循环的数字i
sbu.append(i);
}
//利用正则表达式制定一个格式,每一段开头是+-或者空,后面是0-9之间的数字,例如
// 12+345-6+78-9
var p3 = Pattern.compile("[+-]*[0-9]+");
//将字符串构造器内的字符串与格式匹配
var m3 = p3.matcher(sbu);
//定以一个int类型的变量当作式子的和
int sum = 0;
//将构造器中的字符串按顺序判断是否与格式匹配
while (m3.find()) {
//将子序列字符串转换为int类型赋值与num
int num = Integer.parseInt(m3.group());
//将转换后的式子相加
sum += num;
}
//判断式子的和是否为100并且集合中不能包含sbu这个字符串
if (sum == 100 && !set.contains(sbu.toString())) {
//输出序列和式子
System.out.printf("%d、%s = 100%n", ++index, sbu);
//将字符串添加到集合set中
set.add(sbu.toString());
}
//判断集合中的字符串数量够10个结束
if (set.size() == 10) {
break;
}
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)