剑指offer——字符串的排列
发布时间:2023-02-02 23:57:00 148 相关标签:
题目描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
思路:将整个过程分成两个步骤,划分成两个部分(第一个字符和后面所有字符)。1、确定首个字符:这个需要将所有字符都跟第一个字符进行交换。2、后面的部分在按照这个思路来进行划分
class Solution {
public:
vector Permutation(string str) {
if(str.empty())
return {};
permutation(str,0);
sort(res.begin(),res.end());//从大到小排序
return res;
}
void permutation(string str,int begin){
if(begin==str.size()){
res.push_back(str);
return ;
}
for(int i=begin;i<str.size();i++){
if(i!=begin&&str[i]==str[begin])//处理重复的情况
continue;
swap(str[i],str[begin]);
permutation(str,begin+1);
swap(str[i],str[begin]);
}
}
private:
vector res;
};
文章来源: https://blog.51cto.com/u_15855860/5812331
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报