2021-09-01剑指 Offer 38. 字符串的排列
class Solution {public:vector<string> permutation(string s) {dfs(s, 0);return res;}
private:vector<string> res;void dfs(string s, int x) {if(x == s.size() - 1) {res.push_back(s); // 添加排列方案return;}set<int> st;for(int i = x; i < s.size(); i++) {if(st.find(s[i]) != st.end()) continue; // 重复,因此剪枝st.insert(s[i]);swap(s[i], s[x]); // 交换,将 s[i] 固定在第 x 位dfs(s, x + 1); // 开启固定第 x + 1 位字符swap(s[i], s[x]); // 恢复交换}}
};作者:jyd
链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/mian-shi-ti-38-zi-fu-chuan-de-pai-lie-hui-su-fa-by/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
//问题:不明白为什么可以排除重复的字符?
在更换固定的字符之前进行检查,看该字符是否被固定过,如果被固定过,则说明更换字符后的排序会有重复
dfs使用循环进行分支
2021-09-01剑指 Offer 38. 字符串的排列相关推荐
- 【LeetCode】剑指 Offer 38. 字符串的排列
[LeetCode]剑指 Offer 38. 字符串的排列 文章目录 [LeetCode]剑指 Offer 38. 字符串的排列 package offer;import java.util.Hash ...
- ++递归 字符串全排列_剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
- LeetCode——剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例:输入:s = "abc" ...
- 剑指 Offer 38. 字符串的排列
import java.util.ArrayList; import java.util.HashSet; import java.util.List;/*** 剑指 Offer 38. 字符串的排列 ...
- 【击败时间100%】剑指 Offer 38. 字符串的排列
立志用最少的代码做最高效的表达 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出 ...
- list转字符串_剑指offer 38——字符串的排列
本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识. 原题 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例 ...
- 【算法】剑指 Offer 38. 字符串的排列 【重刷】
1.概述 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出:["abc ...
- 剑指 Offer 38. 字符串的排列(有重复元素的排列)
思路:dfs 暴搜 class Solution { public:vector<string> permutation(string s) {vector<string> a ...
- 【LeetCode笔记】剑指 Offer 38. 字符串的排列(Java、字符串、DFS)
文章目录 题目描述 思路 && 代码 二刷 打卡第五天- 题目描述 和这道题很相似,只是数据结构不同 思路 && 代码 DFS + 辅助访问数组 + Set 减枝 通过 ...
最新文章
- 相机自动对焦AF原理
- RESTful_基础知识
- 自学python需要买书吗-Python入门到精通学习书籍推荐!
- 【五校联考6day2】er
- Python oct 函数 - Python零基础入门教程
- CSS3中display属性的Flex布局
- oracle中decode的用法(例子)
- 跟小丸子学基础口语16-20
- Java中StringBuffer类的常用方法
- JavaScript快速基础入门
- 【Windows】键盘禁用(屏蔽)Win快捷键
- 新浪微博生成超短链接
- 我对顶级域名、一级域名和二级域名的认识
- 计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上
- FileZilla文件传输失败问题
- 二十四节气-谷雨文案、海报分享,谷雨润万物,不觉夏已至。
- Linux目录结构与Windows对比
- 卷积层运算详解与im2col实现
- 不联网的计算机需要杀毒吗,杀毒软件不联网可以杀毒吗?
- 采用开源程序pyAero批量生成高质量的多块翼型网格