輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc, acb, bac, bca, cab和cba。
輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。
public class solution
public void helper(char c, arraylistlist, int i)
for (int j = i; j < c.length; j++) }
public void swap(char c, int i, int j)
}
解題思路:分治思想的應用
求整個字串的排序整體上可以分成兩步:
求所有可能出現在第乙個位置的字元,這步可以通過把字串的第乙個字元依次與後面的字元交換得到
固定第乙個字元,對其後的字元做第1步的處理
舉個栗子~對字串「abc」我們要求它的所有排列,第一步,確定所有可能出現在第乙個位置的字元:'a', 'b', 'c',假設我們現在得到'a'是首字元,在此基礎上我們固定a,對後面的兩個字元做第一步處理就可以得到"abc"和"acb"兩個結果,同理,當'b','c'作為首字元時,同樣的處理可以得到以它們為首的所有排列。歸併起來就可以得到最終的結果,這就是典型的分治思想的應用,這種思想體現到**中通常是遞迴形式,具體參見上面的solution。
劍指offer 字串
問題描述 class solution auto res temp.c str strcpy str,res strcpy 關於c 中string和char 的區別參考 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0...
劍指offer 字串
問題描述 function replacespace str 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含 0 次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a...
劍指offer 字串
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解這題需要把題意仔細研究清...