0%
题解方法
回溯
- 通过字符交换,依次固定第 i 位字符。
- 需要排除重复字符,保证在第 i 位上每种字符只出现一次。
- 遍历交换第 i 位。
- 递归搜索第 i + 1 位。
- 恢复交换第 i 位。
核心代码
回溯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| private void search(int index) { if (index == chars.length - 1) { res.add(new String(chars)); return; } Set<Character> set = new HashSet<>(); for (int i = index; i < chars.length; i++) { if (set.contains(chars[i])) { continue; } set.add(chars[i]); swap(index, i); search(index + 1); swap(index, i); } }
|
题目来源
字符串的排列 - 力扣(LeetCode)