剑指Offer之 - 字符串的排列

来源:互联网 发布:chairgun3弹道软件 编辑:程序博客网 时间:2024/05/29 18:49

题目:

输入一个字符串,打印出该字符串中字符的所有排列。

思路:

DFS。

代码:

#include<iostream>#include <vector>#include <string>using namespace std;//功能:求字符串全排列void dfs(string str ,vector<string> &result , int len , int start){if(start == len)result.push_back(str);for(int i = start ; i < len ; i++){swap(str[i] , str[start]);dfs(str , result , len , start + 1);swap(str[i] , str[start]);}}vector<string> Permutation(string str){vector<string> result;if(str.empty())return result;int len = str.size();dfs(str , result , len , 0);return result;}void DFSHHT(char *str , int len){if(len == strlen(str))//cout<<str<<" ";printf("%s " , str);for(int i = len ; i < strlen(str) ; i++){swap(str[i] , str[len]);DFSHHT(str , len + 1);swap(str[i] , str[len]);}}void PermutationHHT(char *str){if(str == NULL)return ;DFSHHT(str , 0);}int main(){string str = "abcd";vector<string> result = Permutation(str);for(int i = 0 ; i < result.size() ; i++)cout<<result[i]<<' ';cout<<endl;char str2[] = "abcd";PermutationHHT(str2);cout<<endl;return 0;}


0 0
原创粉丝点击