字符的全排列
2016-05-06 13:51
288 查看
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
第一种情况:不存在重复的字符串
第二种情况,存在重复字符
第一种情况:不存在重复的字符串
class Solution { public: vector<string> result; vector<string> Permutation(string str) { result.clear(); if(str.length()==0) return result; permute(str,0); return result; } void permute(string str,int index) { if(str.length()-1==index) { result.push_back(str); return ; } for(int i=index;i<str.length();++i) { char tt=str[i]; str[i]=str[index]; str[index]=tt; permute(str,index+1); tt=str[i]; str[i]=str[index]; str[index]=tt; } } };
第二种情况,存在重复字符
class Solution { public: vector<string> result; vector<string> Permutation(string str) { result.clear(); if(str.length()==0) return result; permute(str,0); return result; } void permute(string str,int index) { if(str.length()-1==index) { result.push_back(str); return ; } for(int i=index;i<str.length();++i) { bool flag=true; for (int j=index;j<i;++j) { if (str[j]==str[i]) { flag=false; break; } } if(!flag) continue; char tt=str[i]; str[i]=str[index]; str[index]=tt; permute(str,index+1); tt=str[i]; str[i]=str[index]; str[index]=tt; } } };
相关文章推荐
- 使用C语言解决字符串全排列问题
- 字符串全排列:输入一个字符串,打印字符串元素的所有排列
- 面试题28:字符串的排列
- 面试题28:字符串的排列
- 字符串的全排列
- Java递归实现字符串全排列
- 字符串的全排列next_permutaion
- 字符串的全排列
- 字符串或数组全排列的三种方法
- Blog1:字符串全排列算法
- 字符串的排列
- 字符串全排列
- 字符串全排列-递归实现
- 字符串全排列
- 【前端笔试】JavaScript实现字符串全排列
- Python中 os 与 sys 模块
- Mybatis MapperScannerConfigurer 配置
- Android线程的正确使用姿势
- Android 实现形态各异的双向侧滑菜单 自定义控件来袭
- Java:封装POI实现word的docx文件的简单模板功能