前几天找工作,笔试下面这道题:
把1,2,3,4,5,6,7,8,9共九个数分成三组构成排列a1a2a3,a4a5a6,a7a8a9,而且每个数字使用有且仅有一次,构成的排列之比为3:2:1,求输出所有的排列组合。

方法一:
显然a1a2a3,a4a5a6,a7a8a9在[123, 987]内,进一步就是a1a2a3在[123,329],遍历即可

public static void test1(){long e1 = System.currentTimeMillis();for(int i = 123; i <= 329; i ++){if(match(i, 2*i, 3*i)){System.out.println(i + "   " + 2*i + " " + 3*i);}}long e2 = System.currentTimeMillis();System.out.println("time:" + (e2 - e1));
}public static boolean match(int first, int second, int third) {List<Integer> list = Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0);int index = -1;String str = first +  "" + second +  "" + third;for(int i = 0; i < str.length(); i ++){//遍历每一个字符,在list中记录对应字符出现的次数index = Integer.parseInt(str.substring(i, i + 1)) - 1;//index为零则是取到字符0,需要过滤掉if(index < 0 || index > 8){//过滤return false;}if(list.get(index) >= 1){return false;}else{list.set(index, list.get(index) + 1);}}return true;
}
结果:
192 384 576
219 438 657
273 546 819
327 654 981
time:1

方法二:
使用正则表达式过滤

public static void test1() {long e1 = System.currentTimeMillis();Pattern pattern = Pattern.compile(//不重复字符组成的九位数"([1-9])"+ "(?!\\1)([1-9])"+ "(?!\\1|\\2)([1-9])"+ "(?!\\1|\\2|\\3)([1-9])"+ "(?!\\1|\\2|\\3|\\4)([1-9])"+ "(?!\\1|\\2|\\3|\\4|\\5)([1-9])"+ "(?!\\1|\\2|\\3|\\4|\\5|\\6)([1-9])"+ "(?!\\1|\\2|\\3|\\4|\\5|\\6|\\7)([1-9])"+ "(?!\\1|\\2|\\3|\\4|\\5|\\6|\\7|\\8)([1-9])$");String str = "";Matcher match = null;for (int i = 123; i <= 329; i++) {if (3 * i >= 1000) {break;}str = Integer.toString(i * 1000000 + i * 2 * 1000 + 3 * i);match = pattern.matcher(str);if (match.matches())System.out.println(i + " " + 2 * i + " " + 3 * i);}long e2 = System.currentTimeMillis();System.out.println("time:" + (e2 - e1));
}
结果:
192 384 576
219 438 657
273 546 819
327 654 981
time:3

把1,2,3,4,5,6,7,8,9九个数分成三组,各个数字使用一次相关推荐

  1. 从言行合一到知行合一

    本篇记录突然的随想,偶尔停留 2022-01-17 rest不只是一个简单的api约束分享一本rest小手册,如何把东西变得 RESTful! 2021-12-06 规划 未来编程.   未来需要什么 ...

  2. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  3. 程序主动进行电话短信报警,自定义电话、短信、钉钉报警通知

    程序主动进行电话短信报警,自定义电话.短信.钉钉报警通知 一. 规则说明 这里我们要利用到阿里云的云监控的手段,有一个叫做事件监控的东西,可以通过自定义事件上传来进行监控报警. 流程: 程序发现错误 ...

  4. mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间

    先贴一张图! 第一步,"很重要" 在mysql中,有一个创建之初自带的库information_schema,这个库中包含着数据库相关信息,查询数据占用空间就是使用该库,所以首先进 ...

  5. 关于新技术的引入原则 ——从零开始学架构

    不以解决实际问题引入的技术都耍流氓. 新技术的引入不是为了证明自己,而是为了解决实际项目中遇到的问题.希望诸位能够控制住自己的心魔. 新技术的引入要求应该是解决的问题大于带来的问题. 再引入新技术,请 ...

  6. 阿里云K8S容器服务的使用

    使用阿里云k8s构建服务 一. 上传镜像 二. k8s运行 三. 服务配置导入 四. 服务路由 五. 节点亲和性和污点管理 一. 上传镜像 在阿里云控制台找到"容器镜像服务",开启 ...

  7. 系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗

    在 <微服务架构设计模式> 一书中,作者总结了关于微服务的一些"重点",原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻.但如同我给所有客户的忠告一样,我想对 ...

  8. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  9. 微信公众号为指定openid用户推送消息

    微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息. 第一个接口:客服发送消息 请求方式: P ...

  10. kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享

    CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与.对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的.浏览器一旦发现AJAX请求跨源,就会自动添 ...

最新文章

  1. Tony Qu的《WPF揭秘》情节
  2. 使用浏览器console批量更改图片的宽度
  3. fiddler和xampp安装成功后,网站打不开的原因
  4. Hadoop环境搭建教学(二)完全分布式集群搭建;
  5. 某人一定不会的——重口味线段树
  6. 公司管理项目管理中的技巧
  7. Conv2d中的groups参数(分组卷积)怎么理解? 【分组卷积可以减少参数量、且不容易过拟合(类似正则化)】
  8. Go实现Raft第二篇:选举
  9. opengl画的弧线 为什么有一个半径_6个1画生日蛋糕,也太简单啦【图文+视频教程】...
  10. 转- Oracle Audit 功能的使用和说明
  11. Java 2实用教程(第五版)
  12. STM32利用Flymcu进行烧录
  13. DHCPv6 snooping
  14. 视觉目标检测-05:使用目标区域的提取方法(手机iVcam与电脑iVcam之间相机的链接)
  15. 同一服务器中,同一框架下的不同二级域名之间网站session如何互通
  16. 颜色所代表的人的性格
  17. C# C++ 互操作:C++向C#输出不定长数组或指针的实现
  18. 一文了解 AlphaFold 2 背后的 PDB 蛋白质结构数据集
  19. java js方法_JAVA调用js方法
  20. 深度学习之BatchNorm(批量标准化)

热门文章

  1. 抖音seo搜索是什么?源码部署-seo排名系统源码分析
  2. Python学习日记-第二十六天-飞机大战(发射子弹和碰撞检测)
  3. 动态规划+状态压缩思路解决旅行者问题
  4. 怎么看股票走势图(转贴)
  5. java表白程序玫瑰花_Java版给爱人表白的玫瑰花程序代码
  6. 读两本敦煌书杂记-敦煌的历史(一)
  7. 考研复试—专业课英语
  8. 玩转百度即用API(5)——空气质量指数查询
  9. 悼念512汶川大地震遇难同胞——重建希望小学
  10. 矛与盾---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三十五)