面试题28:字符串全排列
字符串全排列是面试中常考的问题,一定要掌握
这题没写出来,思路就是把第一个字符和后面所有字符交换,然后递处理后面n-1个,最后需要在调用交换函数换回原始字符串
1 #include<iostream> 2 using namespace std; 3 #include<assert.h> 4 5 void Permutation(char* pStr, char* pBegin) 6 { 7 assert(pStr && pBegin); 8 9 if(*pBegin == '\0') 10 printf("%s\n",pStr); 11 else 12 { 13 for(char* pCh = pBegin; *pCh != '\0'; pCh++) 14 { 15 swap(*pBegin,*pCh); 16 Permutation(pStr, pBegin+1); 17 swap(*pBegin,*pCh); 18 } 19 } 20 } 21 22 int main(void) 23 { 24 char str[] = "abc"; 25 Permutation(str,str); 26 return 0; 27 }
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7?tpId=13&tqId=11180&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking
牛客网上的输入可能有重复,需要做去重处理
class Solution { public:vector<string> result;vector<string> Permutation(string str) { if(str.empty())return result;Permutation(str,0);return result;}void Permutation(string str,int i){if(i == str.length())result.push_back(str);else{for(int j = i;j < str.length();j++){sort(str.begin() + i,str.end()); //先对str按字典排序if(i != j && str[i] == str[j]) //方式aa这种输出两次continue;swap(str[i],str[j]);Permutation(str,i+1);swap(str[i],str[j]); }}} };
更多字符串排列问题参考:http://blog.csdn.net/hackbuteer1/article/details/7462447
总结全排列递归问题:
if和递归调用控制一个总体循环,for控制剩余循环
fun(数组,起始遍历位置) {if (终止条件)操作;elsefor (遍历数组){swap();fun(); 递归调用swap();} }
8皇后问题可参考全排列解法
转载于:https://www.cnblogs.com/raichen/p/5653153.html
面试题28:字符串全排列相关推荐
- 面试题28 字符串排列
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 结果请按字母顺 ...
- [剑指offer]面试题28:字符串的排列
面试题28:字符串的排列 题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. ...
- 剑指offer——面试题28:字符串的排列
剑指offer--面试题28:字符串的排列 Solution1: 2018年9月2日重做 典型的DFS套路,LeetCode 46 && 47 [46]https://blog.csd ...
- 牛客网在线编程专题《剑指offer-面试题28》字符串的排列
我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 公众号介绍:Microstrong(小强)同学主要研究机器学习.深度学习.计算机视觉.智能对话系统相关内容,分享 ...
- java面试题28 牛客 下面有关java classloader说法错误的是?
java面试题28 牛客 下面有关java classloader说法错误的是? A Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension Cl ...
- 【前端笔试】JavaScript实现字符串全排列
我个人认为前端工程师笔试题中,算法题一般不难,也就这个难度,甚至比这还要简单.这是我在笔试过程中遇到的一个题~下面分享一下解题思路. 大体结构:定义一个方法,传入str变量,返回一个数组,包含所有排列 ...
- 剑指offer:面试题38. 字符串的排列
题目:面试题38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输 ...
- 求字符串全排列的递归算法
求字符串全排列的递归算法 void permutation(char * p_str, char * p_begin) { if(!p_str || !p_begin) { return; } if( ...
- 第十一届蓝桥杯python试题_Python描述 第十一届蓝桥杯省赛第一场 试题 I: 字符串编码...
试题 I: 字符串编码 时间限制: 1.0s 内存限制: 512.0MB 本题总分 25 分 [问题描述] 小明发明了一种给由全大写字母组成的字符串编码的方法.对于每一个大 写字母 小明将它转换成它在 ...
最新文章
- android 对话框
- 物理与计算机信息工程学院,泉州师范学院物理与信息工程学院
- bootloader 简介
- 【C语言】利用递归解决猴子吃桃问题
- [译] 在Web API 2 中实现带JSON的Patch请求
- FreeRTOS的HOOK,以及(23)FreeRTOS 空闲任务分析
- sundancest201驱动_驱动支持列表
- Windows-Exploit-Suggester
- 实训一#1.7F1方程式冠军
- 股票投资(炒股)之入门基础知识
- 乐乎常用的html源码,LOFTER网页版登录入口
- 三菱PLC梯形图入门操作指令
- Node.js 中 __dirname 和 ./ 的区别
- Flume+Kafka双剑合璧玩转大数据平台日志采集
- 代码坏的味道07:依恋情结(Feature Envy)
- DebianLinux下如何安装软件(转)
- 使用Hogo+LoveIt主题搭建博客网站
- 隐身9年的俄罗斯APT组织XDSpy及其XDDown攻击链分析
- 渲染html失败,【报Bug】页面渲染失败,偶发性十次有一次
- 6月不良与垃圾信息举报:垃圾邮件7559件次 降84.2%
热门文章
- pwm控制舵机转动角度程序_舵机的内部结构及工作原理
- websocket server client 编写
- u-boot移植随笔:继续使用svn进行版本控制(合并分支实例)
- php怎样连接mysql_php怎么连接数据库
- 【kafka】Number of insync replicas for partition __transaction_state-4 is below required minimum
- 【Es】es 配置文件详解
- 【算法】LSM-tree 基本原理及应
- 【Kafka】Failed to send data to Kafka: Failed to allocate memory within the configured max blocking
- Spring Boot如何以优雅的姿势校验参数
- 一文详解 Dubbo 注册发现流程