每天一道算法题(39)——含有重复字符的全排列
思路
(1)对于含有重复字符的全排列必须使用isSwap函数
(2)整体思路
a,交换当前子字符串(i----n-1)字符与子字符串后面的每一个位置的字符(满足交换条件下)
b,子字符串位置后移(i+1-----n)。递归处理子字符串
c,将a中的交换复原。
代码
#include <iostream>
#include"string"
using namespace std;
void swap(char& a,char& b){//交换char temp=a;a=b;b=temp;
}
//***************************判断是否交换**********************************************************//
//当前需要交换的位置为m, 被交换的字符位置为n ,则s[n]应该异于s[m]---s[n-1]之间的任意一个字符
bool isSwap(string s,int m,int n){for(int i=m;i<n;i++)if(s[i]==s[n])return false;return true;
}//递归全排列
void permute(string s,int n){if(n+1==s.length()){cout<<s<<endl;return;}permute(s,n+1);char temp;for(int i=n+1;i<s.length();i++){if(isSwap(s,n,i)){swap(s[n],s[i]);permute(s,n+1);swap(s[n],s[i]);}}
}
void main(){string s("12233");permute(s,0);
}
转载于:https://www.cnblogs.com/engineerLF/p/5392960.html
每天一道算法题(39)——含有重复字符的全排列相关推荐
- python经典算法题:无重复字符的最长子串
题目:无重复字符的最长子串. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子 ...
- 最长不重复子串python_python经典算法题:无重复字符的最长子串
题目:无重复字符的最长子串. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子 ...
- 【算法练习】含重复字符的全排列
思路: 不重复字符的字符串,对字符进行遍历, 回溯解决.结果又N!种情况 含有重复的字符串,普通做法N!种情况肯定不对.比如aa的全排列只有一种. 所以此时不能对字符串进行遍历,而是字符的词频进行遍历 ...
- 获取字符串中的.前面的长度_算法连载之求解不含有重复字符的最长子串长度...
问题 给定一个字符串,找出其中不含有重复字符的最长子串长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc" ...
- 一道算法题跟大家分享
无意中看到一道算法题,拿出我的解法与大家分享. 题目:输出1,2,3,4四个数字能组成的互不相同且无重复的三位数并统计满足条件的三位数个数 大家先想想,再看答案吧. View Code 1 /// & ...
- 学渣的刷题之旅 leetcode刷题 3. 无重复字符的最长子串(暴力法、滑动窗口)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...
- LeetCode 每日一题 3. 无重复字符的最长子串
LeetCode 每日一题 3. 无重复字符的最长子串 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文原创 ...
- 每天一道算法题系列十二之整数转罗马数字
每天一道算法题系列: 来源:力扣(LeetCode) 本题链接:https://leetcode-cn.com/problems/integer-to-roman/ 来源是力扣,大家喜欢可以去力扣中文 ...
最新文章
- python绘图subplots函数使用模板
- [jstips]向数组中插入一个元素
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)
- 文档的管理计算机,如何使用FTP自动同步备份电脑文件数据?
- linux mysql 运行状态_Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态...
- mac使用Shell(终端)SSH连接远程服务器
- Axure原型设计导出到PDF文件
- 基于socket通信实现Ftp连接
- NPOI设置Excel中的单元格识别为日期
- 达州2022年9大科技计划项目申报方向、周期、要求汇编大全
- NISP和CISP考试通过率怎样?
- 关于vue的@click传递
- 轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana)
- Android 经典笔记之五:DownloadManager下载管理器介绍
- 【音视频技术】AVC H264的一些基本概念和知识点
- 【Tool工具】LICEcap 推荐 GIf录制工作- 如何简单录制一个gif(Mac Window都可)
- Android 图形架构 之三—— 创建Layer、Surface、SurfaceControl
- 前端html + js视频播放器(快进,快退,倍速,全屏等功能)
- 互联网思维:毛利率变零下的硬件厂家将横尸遍野,华为这样的硬件公司何去何从
- VAR.P和VAR.S
热门文章
- leetcode21 合并两个链表
- C++(STL):11---vector源码剖析
- 使用Ultra Librarian 生成PCB库文件
- 想对你说的话,就在这里!
- 怎样洗头使头发变黑变多
- 方向盘的正确驾驭方法
- 如何减小与“大牛”的差距
- 技术这东西,不可不看,不可全看.
- java开启新线程的三种方法
- 解决 : org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)