gpt4 book ai didi

Java - 给定字符串中的所有排列和组合

转载 作者:行者123 更新时间:2023-12-01 18:52:22 25 4
gpt4 key购买 nike

我想获取给定字符串中的所有排列和组合。我尝试了下面的代码。

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

public class ProblemStatement {

public static void main(String[] args) {

String[] arr = new String[] {"nokia", "htc", "apple", "samsung","mi"};

List<String> totalCombinations = getCombinations(arr);

for(String s : totalCombinations){
System.out.println(s);
}


}

public static List<String> getCombinations(String[] arr){


List<String> combinations = new ArrayList<String>();

for(int i=0; i <arr.length ; i++){

if(i > 0){
String temp = arr[i];
arr[i] = arr[0];
arr[0] = temp;
}
for(int k=0; k==0 ; k++){

for(int j=1 ; j<arr.length ; j++){
String combination = arr[k] + ":" + arr[j];
combinations.add(combination);
}
}

}
return combinations;
}

}

Output:
nokia:htc
nokia:apple
nokia:samsung
nokia:mi
htc:nokia
htc:apple
htc:samsung
htc:mi
apple:nokia
apple:htc
apple:samsung
apple:mi
samsung:nokia
samsung:htc
samsung:apple
samsung:mi
mi:nokia
mi:htc
mi:apple
mi:samsung

按照这个逻辑,我看到了重复的组合。 (例如:诺基亚:htc 和 htc:诺基亚)。我不需要重复的组合。除此之外,我如何获得给定字符串数组的所有排列。任何帮助将不胜感激。
提前致谢。

最佳答案

请尝试如下更新的 getCombinations(String[] arr) 函数以避免重复组合:

public static List<String> getCombinations(String[] arr){


List<String> combinations = new ArrayList<String>();

for(int i=0; i <arr.length-1 ; i++){

for(int j=i+1; j<arr.length; j++){
String combination = arr[i] + ":" + arr[j];
combinations.add(combination);
}

}
return combinations;
}

关于Java - 给定字符串中的所有排列和组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59712244/

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