本文共 1457 字,大约阅读时间需要 4 分钟。
Solution1:
2018年9月2日重做 典型的DFS套路,LeetCode 46 && 47 【46】 【47】, 重写一下:class Solution {public: vectorPermutation(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: vectorPermutation(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/