【LeetCode】剑指 Offer(20)
创始人
2024-05-31 22:37:52
0

目录

题目:剑指 Offer 38. 字符串的排列 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:剑指 Offer 38. 字符串的排列 - 力扣(Leetcode)

题目的接口:

class Solution {
public:vector permutation(string s) {}
};

解题思路:

知道题用到的是回溯的思想,

但是我之前没有做过回溯的题目,

所以可能在理解上有一点不太到位,请见谅:

我的思路是使用一个string来模拟每种情况,然后push进一个数组;

建一个类型是bool的数组用来判断字符串中的字符使用情况(哪个用了,哪个没用);

为了更好的剪枝(删除重复情况),用排序将将相同的字母连在一起,

开始回溯:

如果情况成立,就push进数组;

通过循环遍历(以每个字符开始,有不同情况)

如果出现:同一层两个字符相等,且上一个字符用之前过,证明重复了(剪枝)

最后回溯完返回即可。

代码:

class Solution {
public://这是要返回的数组vector res;vector permutation(string s) {//判断字符串为空的情况if(s.size() == 0)   {return {};}//建一个string用来接收每种情况string tmp;//用这个数组来判断该位置有无字符(并初识化)vector used(s.size());//排序,将相同的字母连在一起sort(s.begin(), s.end());//回溯backtrack(s, tmp, used);//返回return res;}
private:void backtrack(string s, string& tmp, vector& used){//一种情况成立,push进resif(s.size() == tmp.size()){res.push_back(tmp);return;}//循环遍历每一个位置的每一种情况for(int i = 0; i < s.size(); i++){//如果该位置有字符了,就不进去,让i继续++if(!used[i]){//如果字符串s出现同一层两个字符相等,且上一个字符用之前过,证明重复了if(i >= 1 && s[i - 1] == s[i] && !used[i - 1]){continue;}//插入tmp.push_back(s[i]);//表示这个位置已经有字符了used[i] = true;//继续回溯backtrack(s, tmp, used);//返回上一层tmp.pop_back();//表示这个位置没有字符了(这样就能继续往tmp里面插入字符)used[i] = false;}}}
};

有很多题目思路很复杂,不可能只靠写一道题目就学会,

需要多去刷一些同类型的题目,才能更好的学习。

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

相关内容

热门资讯

稳定币发行商Circle为何想...   稳定币发行商 Circle(CRCL)在周一晚间的新闻公告中表示,已正式向美国货币监理署(OCC...
北京至沈阳高铁最快仅需2小时2... 转自:千龙网2025年铁路暑期运输昨日(1日)启动,自7月1日开始至8月31日止,共计62天。国铁北...
蒋连生:锻造过硬作风 担当时代... 转自:梧州发布原标题:蒋连生在讲授深入贯彻中央八项规定精神学习教育专题党课时强调锻造过硬作风 担当时...
7月6日-18日第一次填报   本报讯 昨日,省考试局发布中招志愿填报指南,明确我省中招考生志愿实行考后知分、知排位、网上填报的...
Remark融资1600万美元...   从事人工智能驱动的电商工具开发的初创公司,往往依赖外部数据或用户信号来构建和改进其模型。然而,一...
男生日记的读后感 男生日记的读后感暑假里,妈妈就给我了一本《男生日记》,这部书的主人公吴缅,是个有个性、有责任、还爱冒...
传奇3G武器如何升级? 传奇3G武器如何升级?传奇3G武器如何升级到MAX15+?影响武器升级主要是以下五项内容:(每一项占...
尼斯湖水怪之谜和百慕大三角洲之... 尼斯湖水怪之谜和百慕大三角洲之谜有哪些传闻?请大家介绍介绍,谢谢大家啦,o(∩_∩)o...哈哈关于...
动漫《我的青春恋爱物语果然有问... 动漫《我的青春恋爱物语果然有问题》第三季 什么时候能出看官网吧,他们都没说这要看官方。
移动手机怎么样呼叫转移到声讯台... 移动手机怎么样呼叫转移到声讯台的!fghdfhd不能转移到这样的号码的 转移不过去的