[劍指offer][第四章][28]字串的排列
題目理解:題目個給的字串中可能包含重複的字元,你給出的解中也要包含這些重複的字元,但是解集中不應該包含重複的解。
import java.util.ArrayList;
public class Solution {
public ArrayList<String> Permutation(String str) {
// 2016-04-11
ArrayList<String> rst = new ArrayList<String>();
if (str == null || str.length() == 0) {
return rst;
}
char[] chars = str.toCharArray();
ArrayList<Character> list = new ArrayList<Character>();
help(rst, list, chars);
return rst;
}
private void help(ArrayList<String> rst, ArrayList<Character> list, char[] leftChars) {
if (list.size() == leftChars.length) {
String str = "";
for (Character each : list) {
str += each;
}
if (!rst.contains(str)) { // 可能導致問題
rst.add(str);
}
}
for (int i = 0; i < leftChars.length; i++) {
if (leftChars[i] == 0) {
continue;
}
char thisChar = leftChars[i];
list.add(thisChar);
leftChars[i] = 0;
help(rst, list, leftChars);
list.remove(list.size() - 1);
leftChars[i] = thisChar;
}
}
}
相關文章
- 【劍指offer】字串的排列字串
- 劍指 Offer 38. 字串的排列字串
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串的組合字串
- 【劍指offer】左旋轉字串字串
- 劍指Offer 表示數值的字串字串
- 【劍指offer】字串轉整數字串
- 《劍指offer》:[54]表示數值的字串字串
- 【劍指offer】替換字串中的空格字串
- 劍指Offer系列之「表示數值的字串」字串
- 劍指offer-字串空格替換為“ ”字串
- 《劍指offer》:[42-1]左旋轉字串字串
- 《劍指offer》:[49]把字串轉化成整數字串
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 劍指offer——把字串轉換成整數C++字串C++
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- 【劍指offer】刪除在另一個字串中出現的字元字串字元
- 劍指offer-JavaScript版JavaScript
- 劍指Offer題解合集
- 【劍指offer】樹的子結構
- 劍指offer-Go版實現 第四章:解決面試題的思路Go面試題
- 劍指offer—58_2.左旋轉字串—分析及程式碼(Java)字串Java
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 劍指 offer(1) -- 陣列篇陣列
- Leetcode劍指offer(八)LeetCode
- 劍指offer刷題記錄
- 劍指offer——包含min函式的棧函式
- 【劍指offer】陣列中的逆序對陣列
- 【劍指offer】包含min函式的棧函式
- leetcode 劍指 Offer 48. 最長不含重複字元的子字串LeetCode字元字串
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer解析-下(Java實現)Java
- 劍指offer解析-上(Java實現)Java
- 劍指offer——重建二叉樹二叉樹
- 【劍指offer】二叉樹深度二叉樹
- 【劍指offer】員工年齡排序排序
- 【劍指offer】10.程式的完整性
- 劍指offer-17:樹的子結構