題目:輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。我們可以把乙個字串看成由兩部分組成:第一部分為它的第乙個字元,第二部分是後面的所有字元。在下圖中,我們用兩種不同的背景顏色區分字串的兩部分。
step1.把字串分為兩部分,一部分是字串的第乙個字元,另一部分是第乙個字元以後的所有字元(有陰影背景的區域)。
step2.接下來我們求陰影部分的字串的排列,拿第乙個字元和它後面的字元逐個交換。
public(1)封裝測試輔助方法static
void permutation(char
str)
permutation(str, str, 0);
}public
static
void permutation(char str, char begin, int
startindex)
else}}
publicview codestatic
void testportal(string
str)
else
begins:
", str);
permutation(str.tochararray());
}console.writeline();
}
(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 題目分析 可以分成兩步。第一步求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第二步固定第乙個字元,求後面...