大厂面试题(利用JAVA写一到九求和算法)

举报
桃花键神 发表于 2022/04/17 12:30:21 2022/04/17
【摘要】 大厂面试题(利用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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。