Tag: 排列

Java中的字符串排列(非递归)

我是一名十年级的高中生,试图解决Java上的数据结构和算法书中的一些问题。 其中一个问题是打印字符串的所有排列。 class C14 { public static void main(char a[]) { // char[] a = {‘c’,’a’,’r’,’b’,’o’,’n’}; int c=0,w=0; for(int q = 0;q<a.length;q++) { for(int i=0;i<a.length;i++) { for(int j=1;j<a.length;j++) { for(int k=1;k<a.length-1;k++) { for(int z=0;z<a.length;z++) { System.out.print(a[z]); c++; } w++; System.out.println(); char p=a[k+1]; a[k+1]=a[k]; a[k]=p; } System.out.println(); } System.out.println(); char x=a[0]; a[0]=a[1]; a[1]=x; } } System.out.println(" […]

使用迭代的字符串排列

我试图找到给定字符串的排列,但我想使用迭代。 我在网上找到的递归解决方案,我确实理解它,但将其转换为迭代解决方案实际上并没有成功。 下面我附上了我的代码。 我真的很感激帮助: public static void combString(String s) { char[] a = new char[s.length()]; //String temp = “”; for(int i = 0; i < s.length(); i++) { a[i] = s.charAt(i); } for(int i = 0; i < s.length(); i++) { String temp = "" + a[i]; for(int j = 0; j < s.length();j++) { […]

无法理解字符串排列Java代码

我有这个工作代码来打印字符串排列而不重复,但无法解决它如何在逻辑中工作。 任何建议都会非常有帮助。 private static void permutation(String input, String sofar) { if (input.equals(“”)) { System.out.println(count + ” ” + sofar); count++; } for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (input.indexOf(c, i + 1) != -1) continue; permutation(input.substring(0, i) + input.substring(i + 1), sofar+c); } } function调用: String input […]

按字母顺序对基于其成员项的“toString”值的Java Collection进行排序

假设我有一个名为Foo的用户定义的Java类,例如: public class Foo { private String aField; @Override public String toString() { return aField; } } 和一个集合,如: List aList; 我想要做的是根据每个成员返回的’.toString()’值按字母顺序对列表进行排序。 我已经尝试使用Collections.sort()方法,但结果不是我正在尝试的。 为了做到这一点,我需要做什么?

生成一定长度的所有排列

假设我们有一个字母“abcdefghiklimnop”。 如何以有效的方式以五组为单位递归地重复生成这种字母表的排列? 我几天来一直在努力解决这个问题。 任何反馈都会有所帮助。 基本上这与以下内容相同: 生成给定字符串的所有排列 但是,我只想要整个字符串的FIVE长度排列。 我无法弄清楚这一点。 对于“abcdefghiklimnop”长度为5的所有子串,找到子串的排列。 例如,如果子字符串是abcdef,我希望它的所有排列,或者如果子字符串是defli,我会想要该子字符串的所有排列。 下面的代码给出了字符串的所有排列,但我想用它来查找字符串大小为5的所有子串的所有排列。 public static void permutation(String str) { permutation(“”, str); } private static void permutation(String prefix, String str) { int n = str.length(); if (n == 0) System.out.println(prefix); else { for (int i = 0; i < n; i++) permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, […]

用于排列数字列表的Java代码

我编写了一个程序来查找给定项目列表的所有可能的排列。 这恰恰意味着我的程序打印r = 0到n的所有可能的P(n,r)值 以下是代码: package com.algorithm; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; public class Permutations { public static void main(String args[]) { Permutations obj = new Permutations(); Collection input = new ArrayList(); input.add(1); input.add(2); input.add(3); Collection<List> output = obj.permute(input); int k = 0; Set<List> pnr = null; for […]

使用随机数发生器随机排列整数

这是我的家庭作业: Random r = new Random(); public int get100RandomNumber() { return 1+r.nextInt(100); } 您将获得一个名为getrand100()(上面)的预定义函数,该函数返回一个整数,该整数是1-100中的一个随机数。 您可以根据需要多次调用此函数,但要注意此函数是非常耗费资源的。 您不能使用任何其他随机生成器。 您无法更改getrand100()的定义。 输出:以随机顺序打印数字1-20。 (不是20个随机数) 我试过的.. public class MyClass { static Random r = new Random(); static HashSet; public static void main(String args[]) { myMethod(); System.out.println(s); } public static void myMethod() { boolean b = false; s = new HashSet(); int […]

获取int 的排列删除重复集

我有一个[]的整数1 <= N 数组可能包含重复项,因此得到的排列集可能是重复的,因此需要获得所有非重复的排列。 我发现很多片段会将int []转换为字符串并执行排列和打印输出,但是因为我这里是范围1 <= N <= 100的整数,所以将它们转换为字符串会破坏整数。 我可以获得所有重复项的排列,包括最后一组排列,删除重复项必须检查 彼此删除一个副本左右,它是如此繁重的过程。 有没有更简单的方法? 例如:123会给 231 321 312 132 213 123 同样地,112计划会给 121 211 211 121 112 112 因此,对于n组元素,排列将是n! 随着元素中的重复,将减少,我问我如何删除这些重复集。 (重复的置换集合arr [])

获取包含Java中重复字符的字符串或组合的所有可能排列

我一直在尝试生成每个可能的4个字符串的列表,该字符串可以由任何给定的字符集组成。 我已经使用一个函数从一组字符生成每4个字符组合,但每个字符只使用一次。 我需要使用给定的一组字符进行每种可能的组合,例如: String[] elements = {“a”, “b”, “c”, “1”, “2”, “3”}; int[] indices; CombinationGenerator x = new CombinationGenerator (elements.length, 4); StringBuffer combination; while (x.hasMore ()) { combination = new StringBuffer (); indices = x.getNext (); for (int i = 0; i < indices.length; i++) { combination.append (elements[indices[i]]); } System.out.println (combination.toString ()); } 使用此处的CombinationGenerator类,将返回每个唯一的4个字符组合,例如: ‘abcd’ […]

如何在Java中生成随机排列?

生成n个数的随机排列的最佳方法是什么? 例如,假设我有一组数字1,2和3(n = 3) 一组所有可能的排列:{123,132,213,231,312,321} 现在,我该如何生成: 上述集合中的一个元素(随机选择) 如上所示的整个排列集 换句话说,如果我有一个n个元素的数组,我该如何随意混洗它们? 请协助。 谢谢。