zoukankan      html  css  js  c++  java
  • 0到9生成4个8位数的字符串

      分享一个面试题,哎,用自己的方法写了我好久才写出来,查了一下资料记个笔记。。。

    public static void main(String[] args) {
    
            //题目:0到9这几个数字生成4个不相同的8位数的字符串,例如12345678,12345687,12345786,123456768  注意,每一个字符串中的数字也是不能重复的
            //错误分析:我原来的思路是首先我们要想办法获取一个八位数的字符串,只要这个能成功弄出来,我们循环四次然后丢到HashSet中就搞定了
            //所以我就想着弄一个List存放0到9,然后循环8次,每次都获取一个随机数m,然后将随机数m%list.size()得到索引下标,根据下标获取这个数之后然后
            //在List中将这个数remove掉,那么下次从集合中获取一个数字的时候就不会重复了,只是这种方式贼鸡儿麻烦。。。我也是醉了
    
            //正确分析:经过我查了一些资料,其中我们的目标是得到8个不重复的数字而已,那么直接用一个HashSet当容器,接收随机数10*Math.random(),
            //当set中的数量到达8个就满足条件了呀
            Set<String> result = new HashSet<>();
            while (result.size() < 4) {
                result.add(getNoRepectStr());
            }
            System.out.println("生成的四个字符串为:" + result);
    
    
        }
    
        //获取一个8位不重复的字符串,注意我们获取随机数有两种方式,一种是Math.random()生成一个「0,1)之间的数,那么生成0到9,只需要乘以10就行了
        // 另一种是Random random = new Random();random.nextInt(10),也是生成0到9
        //我个人推荐的话直接使用第一种吧,不需要new对象,写起来比较方便
        public static String getNoRepectStr() {
            StringBuilder sb = new StringBuilder();
            Set<Integer> set = new HashSet<>();
            while (set.size() < 8) {
                //0到9随机数
                int ran = (int) (10 * Math.random());
                set.add(ran);
            }
            //将set中的数字拼接成字符串然后返回
            //这里有个很有意思的东西,set中的元素是从小到达排序好了的,例如往set中依次放入1,3,2,你打印的话会是1,2,3,
            // 不是说好的set中的元素是无序的么?有兴趣可以查查资料为啥叻?
            for (Integer num : set) {
                sb.append(num);
            }
            return sb.toString();
        }
  • 相关阅读:
    onmouseover事件
    ref:ThinkPHP Builder.php SQL注入漏洞(<= 3.2.3)
    ref:mysql命令大全
    ref:mysql丢失密码,如何修改?
    ref:学习笔记 UpdateXml() MYSQL显错注入
    转:[译]CSV 注入:被人低估的巨大风险
    转:深入剖析 JavaScriptCore
    转:Exploiting Electron RCE in Exodus wallet
    转:LNMP虚拟主机PHP沙盒绕过/命令执行(php exec命令被禁之后)
    转:Ubuntu16.04下配置php+vscode+xdebug开发环境
  • 原文地址:https://www.cnblogs.com/wyq1995/p/13504637.html
Copyright © 2011-2022 走看看