返回

剑指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;
};

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
剑指offer——数组中的逆序数对 2023-02-02 23:11:40