劍指Offer面試題 26 字串的排列

2022-01-11 09:44:34 字數 1282 閱讀 3932

題目:輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。

我們可以把乙個字串看成由兩部分組成:第一部分為它的第乙個字元,第二部分是後面的所有字元。在下圖中,我們用兩種不同的背景顏色區分字串的兩部分。

step1.把字串分為兩部分,一部分是字串的第乙個字元,另一部分是第乙個字元以後的所有字元(有陰影背景的區域)。

step2.接下來我們求陰影部分的字串的排列,拿第乙個字元和它後面的字元逐個交換。

public

static

void permutation(char

str)

permutation(str, str, 0);

}public

static

void permutation(char str, char begin, int

startindex)

else}}

(1)封裝測試輔助方法

public

static

void testportal(string

str)

else

begins:

", str);

permutation(str.tochararray());

}console.writeline();

}

view code

(2)功能測試、特殊輸入測試

出處:

劍指Offer面試題 26 字串的排列

題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a b c所能排列出來的所有字串abc acb bac bca cab和cba。我們可以把乙個字串看成由兩部分組成 第一部分為它的第乙個字元,第二部分是後面的所有字元。在下圖中,我們用兩種不同的背景顏色區分字串的兩部...

劍指offer面試題26

面試題26 複雜鍊錶的複製 題目 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複製鍊錶中,每個結點除了有乙個m pnext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中任意結點或者null。結點的c 定義如下 s...

劍指offer 面試題28 字串的排列

題目描述 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c 所能排列出來的所有字串abc,acb,bac bca,cab 和cba 題目分析 可以分成兩步。第一步求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第二步固定第乙個字元,求後面...