题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
利用递归,固定第一个字符,第一个字符和后序字符依次交换。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> nResult;
void per(string str,int num)
{
if(num==str.length())
{
nResult.push_back(str);
return ;
}
for(int i=num;i<str.length();i++)
{
if(i!=num && str[i]==str[num])
{
continue;
}
swap(str[num],str[i]);
per(str,num+1);
}
}
int main()
{
string s;
getline(cin,s);//字符串输入
cout<<"输入字符串为:"<<s<<endl;
if(s.length()==0)
return 0;
per(s,0);
sort(nResult.begin(), nResult.end());//输出结果排序
for(int i=0;i<nResult.size();i++)
{
cout<<nResult[i]<< " ";
}
cout<<endl;
return 0;
}

本文详细解析了如何使用递归算法实现字符串的全排列,并通过C++代码示例展示了具体的实现过程。输入一个字符串,算法将输出该字符串所有可能的排列组合,适用于面试准备和技术学习。
8198

被折叠的 条评论
为什么被折叠?



