博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——面试题28:字符串的排列
阅读量:2254 次
发布时间:2019-05-09

本文共 1457 字,大约阅读时间需要 4 分钟。

剑指offer——面试题28:字符串的排列

Solution1:

2018年9月2日重做
典型的DFS套路,LeetCode 46 && 47
【46】
【47】,
重写一下:

class Solution {public:    vector
Permutation(string str) { if (!str.size()) return {}; if (str.size() == 1) return vector
{str}; set
tmp_res; //未访问过 0; 访问过 1 vector
visited(str.size(), 0); int level = 0; string tmp_str; my_dfs(str, tmp_res, tmp_str, visited, level); return vector
(tmp_res.begin(), tmp_res.end()); } void my_dfs(string &str, set
&tmp_res, string &tmp_str, vector
&visited, int level) { if (level == str.size()) { tmp_res.insert(tmp_str); return; } else { for (int i = 0; i < str.size(); i++) { if (visited[i]) continue; else { tmp_str += str[i]; visited[i] = 1; my_dfs(str, tmp_res, tmp_str, visited, level + 1); tmp_str.pop_back(); visited[i] = 0; } } } }};

Soltion2:

第一次做题时的答案
发现了一个代码风格很清新的博客,网址是:
此题答案就是根据此博客整理而来~

class Solution {public:    vector
Permutation(string str) { vector
res; if(str.empty()) return res; FindAll(str, 0, res); sort(res.begin(),res.end()); return res; } void FindAll(string s, int begin, vector
&result){ //遍历第begin位的所有可能 //一次遍历的结束条件 if(begin == s.size()-1) result.push_back(s); for(int i = begin; i

转载地址:http://ixhdb.baihongyu.com/

你可能感兴趣的文章
ansible模块 yum service cron user
查看>>
ansible剧本编写
查看>>
剧本的重要功能介绍
查看>>
NFS服务剧本
查看>>
将多个剧本进行整合
查看>>
ansible程序roles角色
查看>>
一个web请求的处理过程
查看>>
HTTP协议请求报文
查看>>
Nginx官网YUM源
查看>>
利用nginx服务搭建网站文件共享服务器
查看>>
Nginx解决中文乱码
查看>>
Nginx日志切割
查看>>
YUM安装PHP7.1
查看>>
PHP和MySQL建立连接
查看>>
高可用服务安全访问配置(负载均衡服务)
查看>>
检查高可用脑裂脚本
查看>>
nginx服务挂掉自动释放VIP脚本
查看>>
监控服务概念
查看>>
PHP 7 YUM源
查看>>
zabbix 官方YUM源
查看>>