[剑指Offer]38-字符串的全排列
链接
题意
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
解题思路
把字符串分成第一个字符和除第一个字符的子串,第一个字符与子串中的每个未做过第一个字符的字符分别做第一个字符,余下的子串递归地拆解下去。Permutation函数返回str的所有全排列的vector容器。
注意含重复字符的处理。
相关
- debug时要尽快定位到错误发生的地方,查看相关变量。
- 截取string的一部分的方法:使用string类型的构造函数:
string s(s2,pos2)string s(s2,pos2,len2)
代码
class Solution {
public:
vector<string> Permutation(string str) {
vector<string> strVec;
if(!str.length()){
return strVec;
}
if(str.length()==1){
strVec.push_back(str);
return strVec;
}
vector<string> childStrVec;
set<char> firstCharSet;
for(size_t i=0;i<str.length();++i){
if(i!=0){//
char tempStr=str[0];
str[0]=str[i];
str[i]=tempStr;
}
if(firstCharSet.find(str[0])==firstCharSet.end()){//
firstCharSet.insert(str[0]);
string nextStr(str,1);
childStrVec=Permutation(nextStr);
for(auto it=childStrVec.begin();it!=childStrVec.end();++it){
string childStr=*it;
string newStr=str[0]+childStr;
strVec.push_back(newStr);
}
}
}
return strVec;
}
};
[剑指Offer]38-字符串的全排列的更多相关文章
- 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列
剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...
- 剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
- 【Java】 剑指offer(38) 字符串的排列
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串ab ...
- 《剑指offer》---字符串的全排列
本文算法使用python3实现 1.问题一 1.1 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc ...
- 每日一题 - 剑指 Offer 38. 字符串的排列
题目信息 时间: 2019-06-29 题目链接:Leetcode tag:深度优先搜索 回溯法 难易程度:中等 题目描述: 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个 ...
- 剑指Offer:字符串排列【38】
剑指Offer:字符串排列[38] 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bc ...
- 【剑指Offer】字符串的排列 解题报告(Python)
[剑指Offer]字符串的排列 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 【Java】 剑指offer(50-1) 字符串中第一个只出现一次的字符
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在字符串中找出第一个只出现一次的字符.如输入"abacc ...
- 【剑指offer】字符串的组合
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/26405471 转载请注明出处:http:// ...
- 剑指offer 67. 字符串转换为整数(Leetcode 8. String to Integer (atoi))
题目:剑指offer 67题 需要考虑的情况:空指针.nullptr.空字符串"".正负号.数值溢出.在写代码的时候对这些特殊的输入都定义好合理的输出.可以定义一个全局布尔型变量g ...
随机推荐
- [笔记]_ELVE_正则表达式
本文章转载至简书技匠,简书签约作者,技匠,以上内容欢迎大家分享到朋友圈/微博等. 正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑. ...
- golang cache--go-cache
go-cache是一款类似于memached 的key/value 缓存软件.它比较适用于单机执行的应用程序. go-cache实质上就是拥有过期时间并且线程安全的map,可以被多个goroutine ...
- 域名到站点的负载均衡技术一览(主要是探讨一台Nginx抵御大并发的解决方案)(转)https://www.cnblogs.com/EasonJim/p/7823410.html
一.问题域 Nginx.LVS.Keepalived.F5.DNS轮询,往往讨论的是接入层的这样几个问题: 1)可用性:任何一台机器挂了,服务受不受影响 2)扩展性:能否通过增加机器,扩充系统的性能 ...
- Linux-Shell基础(变量,字符串,数组)
一. 什么是shell shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统 ...
- svn Mac
将已有项目放到svn服务端 svn import 已有项目地址 服务端地址 -m '注释必须填写' 例子 svn import /Applications/Emma/workspace/tansun/ ...
- linux环境下载和安装scala
Linux下安装Scala和Windows下安装类似,步骤如下: 1.首先访问下载链接:http://www.scala-lang.org/download/默认这里下载的是Windows版本,这时点 ...
- 60.纯 CSS 创作一块乐高积木
原文地址:https://segmentfault.com/a/1190000015369542 感想:y轴旋转,相对定位,今天有点懵呀,唉. HTML code: <!-- 定义dom,容器中 ...
- ssh服务器配置
使用如下终端命令可以在 Linux 主机中安装 ssh服务器sudo apt-get install openssh-server lin@lin-machine:~$ sudo apt-get in ...
- Navicat for MySQL使用
Navicat for MySQL使用 导出数据库表与结构 新数据库导入
- CodeSmith 代码生成器
在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做 ...