给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无用