博客
关于我
强烈建议你试试无所不能的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/

你可能感兴趣的文章
Python - Django - CSRF
查看>>
Python - Django - 模板语言之变量
查看>>
Python - Django - 模板语言之 Filters(过滤器)
查看>>
OD 实验(十八) - 简单注册机的编写
查看>>
OD 实验(二十) - 对反调试程序的逆向分析(一)
查看>>
OD 实验(十七) - 对一个程序的逆向分析
查看>>
Julia - 复合表达式
查看>>
OD 实验(十九) - 对多态和变形程序的逆向
查看>>
IDA Pro 权威指南学习笔记(十三) - 基本代码转换
查看>>
OD 实验(十二) - 对一个 Delphi 程序的逆向
查看>>
渗透辅助神器 - DZGEN
查看>>
IDA Pro 权威指南学习笔记(十二) - IDA 中的注释
查看>>
IDA Pro 权威指南学习笔记(十四) - 操纵函数
查看>>
ghostscript 远程命令执行漏洞复现
查看>>
C 语言 - 分支、跳转和循环语句
查看>>
Julia - If 条件语句
查看>>
OD 实验(十三) - 对一个程序的逆向
查看>>
Julia - 三元运算符
查看>>
开启 3389 的 cmd 命令
查看>>
C 语言 - 逻辑运算和短路求值
查看>>