Я хочу получить все перестановки и комбинации в данной строке. Я попробовал следующий код.
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
Согласно этой логике c, я вижу повторяющиеся комбинации. (Пример: Nokia: HT c & HT c: Nokia). Мне не нужны повторные комбинации. Наряду с этим, как я могу получить все перестановки для данного массива строк. Любая помощь будет принята с благодарностью.
Заранее спасибо.