給定乙個字串,輸出該字串所有單個字元重新排列的不重複的字串。
例如: abc
輸出:abc,acb,bac,bca,cba,cab
回溯思想,將字串轉化為字元陣列,單個字元兩兩交換位置,完成後回溯到上一層。
public arraylist
permutation
(string str)
hashset
set=
newhashset
();fun
(set
, str.
tochararray()
,0);
result.
addall
(set);
collections.
sort
(result)
;//工具類排序
return result;
}void
fun(hashset
set, char[
] str, int k)
for(int i = k; i < str.length; i++)}
// 輔助方法
void
swap
(char[
] str, int i, int j)
}
演算法之字串重組
演算法題目 字串重組 輸入 a b c 輸出 abc.將所有的 都移動到字串的前半部分,字元移動到後半部分,保證字元的順序。思路 要保證字母的順序不能發生變化,可以從後向前遍歷字串,遇到字母時,就把它往後移動,這樣,最終所有的字母都在後面,可往後移動到 呢?可以設定乙個標識位index,這個inde...
《演算法》 字串 字串排序
輸入字串和字串對應的組別 組別也是字串的鍵 在滿足組別有小到大排序的情況下,將字串按字母順序排序 第一步,記錄組別的頻率 為了得到某個字串在排序後的範圍,比如組別2肯定在組別1後面,在組別3前面,把每個組別有多少個人記錄下來,方便我們定位 第三步,分類 該組別的位置起點 向後挪一位 因為當前位被用了...
字串演算法 字串雜湊
方法以,m進製的形式來表示乙個字串,那麼這個字串就可以輕鬆計算 i j 之間的hash值 當只有小寫 大家字母時,m 131 而hash值,可以使用unsigned long long 來表示,這時不再需要求餘 方法應用 字串匹配。思路 對比hash值 允許k次失配的字串匹配 即 允許k次字元值不對...