剑指offer 28:字符串的排列
题目描述
输入描述
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
解题思路
本题解题思路与存在重复数字的数组的全排列思路相同。需要完成排列去重的工作。因而工作分为两步。第一,确定当前数组元素的全排列;第二,对排列结果去重。
1.无论对于数组还是字符串,使用递归实现全排列的过程最容易,对于一个字符串而言,他的所有全排列可视为由第一个字符与剩余所有字符全排列的连接。而对于剩余字符,又可视为剩余字符中第一个字符,与其他剩余字符全排列的连接,依次递归。
2.对于去重,使用哈希地址映射,快速去重,简单讲就是使用set数据类型存储得到的所有全排列,最终set集合中得到的就是去重后的结果。
C++代码实现
class Solution {
public:
vector<string> Permutation(string str) {
vector<string> result;
int sz=str.size();
if(sz==){
return result;
}
Permutation_sub(str,,result);
set<string> st(result.begin(), result.end());
result.assign(st.begin(), st.end());
return result;
}
void Permutation_sub(string &str, int begin, vector<string> &strlist){
int sz=str.size();
if(begin==(sz-)){
strlist.push_back(string(str));
}
else{
for(int pos=begin;pos<sz;pos++){
char tmp=str[pos];
str[pos]=str[begin];
str[begin]=tmp;
Permutation_sub(str,begin+,strlist);
tmp=str[pos];
str[pos]=str[begin];
str[begin]=tmp;
}
}
}
};
剑指offer 28:字符串的排列的更多相关文章
- 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列
剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...
- 剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
- 【剑指Offer】字符串的排列 解题报告(Python)
[剑指Offer]字符串的排列 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 【Java】 剑指offer(38) 字符串的排列
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串ab ...
- Go语言实现:【剑指offer】字符串的排列
该题目来源于牛客网<剑指offer>专题. 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,b ...
- 《剑指offer》字符串的排列
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 剑指Offer 27. 字符串的排列 (字符串)
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输 ...
- 剑指offer:字符串的排列
题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: ...
- 剑指OFFER之字符串的排列(九度OJ1369)
题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个 ...
- 【剑指offer】字符串的排列
一.题目: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 二.思路: ...
随机推荐
- SAP S4HANA TR传输之操作
SAP S4HANA TR传输之操作 事务代码: STMS_IMPORT, 选中请求,点击漏斗按钮, 输入要传输的TR(可以多个),然后回车, 鼠标单击请求号,按F9, 然后传输, 点击按钮'是',系 ...
- JSON2ABAPType:根据JSON数据结构生成ABAP类型定义
一图表明本文将要介绍的工具: JSON是常见的数据格式,经常用于接口开发.ABAP开发者通常使用/ui2/cl_json来把JSON数据转换为相应的ABAP类型. 在转换前,必须要定义相应的ABAP类 ...
- 18.JAVA-pull解析XML
1.pull解析介绍 pull解析其实和我们上章学的sax解析原理非常类似,在Android中非常常用. 在java中,需自己获取xmlpull所依赖的类库分别为:kxml2-2.3.0.jar,xm ...
- RMAN 下NOARCHIVELOG和ARCHIVE模式的恢复
恢复处于NOARCHIVELOG模式的数据库 当数据库处于NOARCHIVELOG模式时,如果出现介质故障 ,则最后一次备份之后对数据库所做的任何操作都将丢失.通过RMAN执行恢复时,只需要执行res ...
- requests第三方库
requests第三方库 简介: requests是一个优雅而简单的Python 第三方HTTP请求库,专为人类而构建. requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档:ht ...
- CompareAndSwap原子操作原理
在翻阅AQS(AbstractQueuedSynchronizer)类的过程中,发现其进行原子操作的时候采用的是CAS.涉及的代码如下: 1: private static final Unsafe ...
- Java连载59-局部内部类、匿名内部类
一.局部内部类 1.局部内部类等同于局部变量 2.局部内部类在访问局部变量的时候,局部变量必须使用final修饰. 3.举个例子: package com.bjpowernode.java_learn ...
- PHP中使用date获取上月最后一天出现的问题
上次做项目时,发现一个问题,这里记录一下: 问题: 在使用date函数获取上一个月最后一天或下个月最后一天时,如果当前日期是31号,获取的数据有问题. // 2019-12-01 正确应该是 2019 ...
- Android Studio中的AndroidManifest.xml文件分析
一.关于AndroidManifest.xml AndroidManifest.xml清单文件是每个Android程序中必须的文件,它是整个Android程序的全局描述文件,除了能声明程序中的Acti ...
- java开发,入职半年。对未来迷茫,如何发展?
蛮多人私密我一些问题,关于面试,关于技术的,我只能说有些路只能靠自己去走,没人可以帮到自己,哪怕偶尔帮一到两次,但是技术的路这么长,总归需要自己独自成长的.附一张自己藏书的照片,与各位共勉 工作三年多 ...