没有合适的资源?快使用搜索试试~ 我知道了~
示例:void dfs(string& str,string& tmp,vector<bool>& used)//与原字符串相同字符数大小,认为此时 tmp 新
资源详情
资源评论
资源推荐
字符串的排列
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
class Solution {
public:
set<string> ss;
vector<string> res;
void dfs(string& str,string& tmp,vector<bool>& used)
{
if(tmp.size()==str.size())
{
ss.insert(tmp);//与原字符串相同字符数大小,认为此时 tmp 新串符合条件
存储在 set 后去重
return;
}
//若与原字符串字符数大小不相等,逐个构造
for(int i=0;i<str.size();i++)
{
if(used[i]) continue;
tmp+=str[i];//当前字符没有被使用过,进行构造
used[i]=true;//使用过后修改状态
//搜索,构造下一个字符
dfs(str,tmp,used);
//此时说明已经有一个字符串构造成功,构造下一个字符串之前需要将当前状
态恢复,并从后逐步替换字符从而构造新字符串
used[i]=false;
tmp.pop_back();
}
}
vector<string> permutation(string s) {
string tmp="";
vector<bool> used(s.size(),false);
dfs(s,tmp,used);
for(auto& ch:ss)
{
res.push_back(ch);//从去重 set 取出放在 res 中
Friday永不为奴
- 粉丝: 13
- 资源: 317
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0