字符串排列-dfs算法
2017-05-23 17:27
162 查看
class Solution {
public:
vector<string> Permutation(string str) {
vector<string>array;
if(str.size()==0)
return array;
per(array,str,0);
sort(array.begin(),array.end());
return array;
}
void per(vector<string>&array,string str,int begin)//遍历第begin
{
if(begin==str.size()-1)
array.push_back(str);
for(int i=begin;i<=str.size()-1;i++)
{
if(i!=begin&&str[i]==str[begin])
continue;
swap(str[i],str[begin]);
per(array,str,begin+1);
swap(str[i],str[begin]);
}
}
};
public:
vector<string> Permutation(string str) {
vector<string>array;
if(str.size()==0)
return array;
per(array,str,0);
sort(array.begin(),array.end());
return array;
}
void per(vector<string>&array,string str,int begin)//遍历第begin
{
if(begin==str.size()-1)
array.push_back(str);
for(int i=begin;i<=str.size()-1;i++)
{
if(i!=begin&&str[i]==str[begin])
continue;
swap(str[i],str[begin]);
per(array,str,begin+1);
swap(str[i],str[begin]);
}
}
};
相关文章推荐
- 字符串的“无重复”全排列非递归算法 [小算法练习]
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- 字符串的全排列和组合算法
- 字符串的排列[算法]
- 字符串全排列算法
- 一个消除重复排列的所有输入字符串的排列算法
- 字符串排列算法的实现
- [算法] 字符串的全排列 [dfs - 递归神技]
- [算法] 输出 字符串的全部子组合 [dfs - 递归神技]
- 数组元素几个关于串的小算法题:最小K个数、连续子数组的最大和、字符串全排列求法、数组循环移位
- 含重复字符的字符串全排列算法(思路+分析)
- 字符串的全排列和组合算法
- 微软等数据结构+算法面试100题(2)--给出一个函数来输出一个字符串的所有排列
- [算法] 字符串的全排列 [dfs - 递归神技]
- 面试题11 - 字符串的排列[算法]
- 每天一道算法题9 字符串的排列
- 字符串的全排列和组合算法
- 字符串全排列和组合算法
- 字符串的全排列和组合算法
- 字符串排列算法的实现