Y海森伯格Y 2022-03-23 12:22 采纳率: 80%
浏览 35
已结题

Java算法:给n个不相同的数,求出组成的所有n位不相同的数

给n个不相同的数,求出组成的所有n位不相同的数,比如给你1,2,3,4,用来组成4位数,用Java求出所有的4位数。

  • 写回答

2条回答 默认 最新

  • L星火燎原 2022-03-23 15:24
    关注
    
    
    ```java
        public static void main(String... args) {
            //这个看你自己的定义,你要是直接用的字符串数组,就用这个,否则就用下面的,把int数组先转字符串数组
            //List<String> list = Arrays.asList(new String[]{"1","2","3","4"});
            int[]  intArrays = {1,2,3,4};
            String[] strArrays=Arrays.toString(intArrays).split("[\\[\\]]")[1].split(", "); //为何可以百度的事情非要来知乎问呢?
            List<String> list = Arrays.asList(strArrays);
            List<String> list1 = permutationNoRepeat(list, 4);
            System.out.println(list1);
    
        }
        /***
         * @Description: 任意输入数组输入组成的不重复字符
         * @Param: [list, length]
         * @return: java.util.List<java.lang.String>
         * @Author: lb
         * @Date:2022/3/23 15:21
         */
        public static List<String> permutationNoRepeat(List<String> list, int length) {
            Stream<String> stream = list.stream().distinct();
            for (int n = 1; n < length; n++) {
                stream = stream.flatMap(i -> list.stream().filter(j -> !i.contains(j)).map(j -> i.concat(j)));
            }
            return stream.collect(Collectors.toList());
        }
    
    
    
    
    输出:
    [1234, 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3214, 3241, 3412, 3421, 4123, 4132, 4213, 4231, 4312, 4321]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。