如果没有要求字典序排序,则直接采用递归的思想,将字符串的排列看成两步,第一步,交换第一个字母和任意一个字母(包括自己,但不包括和自己相等的其他字母)固定第一个字母,固定第一个字母,然后对后面的字符串也采用这样的操作;但是这样并不一定按照字典序排序;

class Solution {
public:
vector<string> Permutation(string str) {
if(str.size()==) return {};
sort(str.begin(),str.end());
vector<string> res;
per(str,,res);
return res;
}
void per(string &str,int id,vector<string> &res){
if(id>=str.size()){
res.push_back(str);
}else{
for(int i=id;i<str.size();i++){
if(i!=id && str[i]==str[id])continue;
char tmp=str[id];
str[id]=str[i];
str[i]=tmp;
per(str,id+,res);
tmp=str[id];
str[id]=str[i];
str[i]=tmp;
}
}
}
};

【剑指offer38】字符串的排列的更多相关文章

  1. 剑指offer28 字符串的排列

    1.全局变量可以在最后去定义并初始化,不一定非要在开头 2.此题有一种特殊情况需要考虑,比如字符串是“aa”,那输出应该是“aa”,而不是“aa,aa”,即相同的不输出.实现这个处理用了c++中的容器 ...

  2. leetcode46. Permutations 、47. Permutations II、 剑指offer字符串的排列

    字符串排列和PermutationsII差不多 Permutations第一种解法: 这种方法从0开始遍历,通过visited来存储是否被访问到,level代表每次已经存储了多少个数字 class S ...

  3. 剑指Offer——字符串的排列

    题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: ...

  4. 剑指offer--9.字符串的排列

    next_permutation(),还是那个feel ------------------------------------------------------------------------ ...

  5. 剑指Offer-27.字符串的排列(C++/Java)

    题目: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输入 ...

  6. 用js刷剑指offer(字符串的排列)

    题目描述 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入 ...

  7. 剑指offer--38.左旋转字符串

    时间限制:1秒 空间限制:32768K 热度指数:173814 本题知识点: 字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果. ...

  8. 剑指Offer——字符串的排序

    Question 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描 ...

  9. 剑指Offer26 字符串的全排列

    /************************************************************************* > File Name: 26_String ...

随机推荐

  1. centos7网络配置脚本

    如下参数根据实际情况修改 #!/bin/bash #设置网络环境 sed -i -e 's|BOOTPROTO=dhcp|BOOTPROTO=static|' /etc/sysconfig/netwo ...

  2. 免费安装正版Xshell6+Xftp6

    先进入链接获取最新的下载地址 下载地址 填写一下姓名+邮箱,勾选需要哪个就行了 它会发给你指定邮箱一个地址,点击即可下载 安装就不用说了...

  3. PL/SQL题型代码示例

    1.记录类型(注意标点符号的使用) 结果: 2.学习流程 3. 4. 5. 6. 写法二: 结果: 写法三: 7.使用循环语句打印1-100 方法一: 或者 方法二: 方法三: 8. 方法二: 9. ...

  4. io:轻松地创建缓存

    介绍 io模块是python中专门用来进行流处理的模块 StringIO 提供字符串形式的缓存,可以不断地往里面写入数据,最后一次性读出 import io # 创建相应的缓存 buf = io.St ...

  5. Dubble 01 架构模型&start project

    Dubbo 01 架构模型 传统架构 All in One 测试麻烦,微小修改 全都得重新测 单体架构也称之为单体系统或者是单体应用.就是一种把系统中所有的功能.模块耦合在一个应用中的架构方式.其优点 ...

  6. xhost + command not found

    如下是一个示例: 原本我以为在没有联网的情况下.不能使用yum 的.可能是本地配置了yum 了吧也可以使用 1. [oracle@11GR2-test ~]$ export DISPLAY=192.1 ...

  7. file命令和readlink命令

    6. 如何软链接设备文件 设备文件比较特殊,如果要创建设备文件的链接,需要用到mknod命令: 1 2 3 4 5 [root@centos7 etc]# ll /dev/sda brw-rw---- ...

  8. GlusterFS ——分布式卷

    GlusterFS概述 全部部署GlusterFS文件系统地址:https://www.cnblogs.com/Mercury-linux/p/12050389.html GlusterFS系统是一个 ...

  9. 第二天·初识HTML

    一·什么是HTML HTML(HyperText Markup Language)是超文本标记语言,"超文本"的意思就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素.不仅 ...

  10. 如何查看fullGC 次数

    如何查看fullGC 次数 如何较少fullGC 如何保证几周才发生一次fullGC