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

标签 java logic

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

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/

相关文章:

java - 如何避免使用 FlowLayout 添加到 JPanel 的第一个组件出现 Hgap

java - 过滤继承对象的集合

python - 从文本实现逻辑

logic - 语义推理机的健全性意味着什么?

c++ - 游戏开发逻辑(获取区域单位)

objective-c - 检查一系列数字的一致性

java - 获取div/html元素的高度和宽度服务器端

java - 一个类的例子如何改变它的行为? Java接口(interface)使用

Java Guice DI 错误 : UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl

序言否定和逻辑否定