1. 程式人生 > >JavaStudy——0031:全排列

JavaStudy——0031:全排列

總時間限制: 1000ms 記憶體限制: 65536kB

描述 給定一個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。 我們假設對於小寫字母有’a’ < ‘b’ < … < ‘y’ < ‘z’,而且給定的字串中的字母已經按照從小到大的順序排列。

輸入 輸入只有一行,是一個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。 輸出 輸出這個字串的所有排列方式,每行一個排列。要求字母序比較小的排列在前面。字母序如下定義: 已知S = s1s2…sk , T = t1t2…tk,則S < T 等價於,存在p (1 <= p <= k),使得 s1 = t1, s2 = t2, …, sp - 1 = tp - 1, sp < tp成立。

樣例輸入

abc

樣例輸出

abc
acb
bac
bca
cab
cba

Accepted程式碼

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        int len=str.length();
        String result="";
        permutation(str,
result,len); in.close(); } static void permutation(String str,String result,int len) { if(result.length()==len) System.out.println(result); else { for(int i=0;i<str.length();i++) { if(result.indexOf(str.charAt(i))<0) permutation
(str,result+str.charAt(i),len); } } } }