演算法題:全排列

給出一個沒有重複數字的序列,返回其所有可能的全排列。

示例:

輸入: abc

輸出:

[[a, b, c], [a, c, b], [b, a, c], [b, c, a], [c, a, b], [c, b, a]]

思路:回溯演算法

import java。util。ArrayList;import java。util。List;import java。util。Scanner;public class Demo1 { static List> res = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System。in); String str = sc。next(); List list = new ArrayList<>(); f(str,list); System。out。println(res); } private static void f(String str,List list) { //終止條件 if(list。size() == str。length()){ res。add(new ArrayList(list)); return; } for(int i = 0; i < str。length(); i++){ if(! list。contains(str。charAt(i))){ list。add(str。charAt(i)); f(str,list); //回溯 list。remove(list。size()-1); } } }}

列印結果:

演算法題:全排列