gpt4 book ai didi

Java 给定整数的字符串排列

转载 作者:行者123 更新时间:2023-12-01 12:54:36 24 4
gpt4 key购买 nike

我正在尝试在java中对给定整数的字符串进行排列。

如果字符串是“abc”并且整数是 2。

我想要以下结果:

ab交流电巴公元前加州CB

如果字符串也是“abc”但整数是3,我想要以下结果:

ABC巴克篮球协会BCA出租车acb

我已经有以下方法:

private static void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) permutationsList.add(prefix);
else {
for (int i = 0; i < n; i++)
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
}
}

但这仅适用于整数等于字符串大小的情况,在本例中为 3。

那么有什么东西可以帮助我通过整数参数来完成这项工作吗?

提前非常感谢;)

最佳答案

对数据集进行排列的最佳方法之一是应用 DFS ,它有助于制作指定长度的所有组合。

这是我针对您的问题的解决方案:

import java.util.ArrayList;
import java.util.List;

/**
* @author mifmif
*
*/
public class DFS {

/**
* list of generated combination
*/
List<String> permutations = new ArrayList<String>();
/**
* input used to generate combination
*/
String input = "ABCDEF";
/**
* the length of the combination
*/
int conbinationSize = 3;
/**
* isChoosed[i] is true if the combination that is currently prepared
* contain index.charAt(i)
*/
boolean[] isChoosed = new boolean[input.length()];

/**
* the DFS method that will generate all possible combination
*
* @param partialOutput
*/
public void generateCombination(String partialOutput) {
if (partialOutput.length() == conbinationSize) {
permutations.add(partialOutput);
return;
}
for (int i = 0; i < input.length(); ++i) {
if (!isChoosed[i]) {
isChoosed[i] = true;
generateCombination(partialOutput + input.charAt(i));
isChoosed[i] = false;
}
}

}

void printCombination() {
for (String c : permutations) {
System.out.println(c);
}
}

public static void main(String[] args) {
DFS dfs = new DFS();
dfs.generateCombination("");
dfs.printCombination();
}
}

关于Java 给定整数的字符串排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com