题解 | #牛牛的字符串排列#
牛牛的字符串排列
https://www.nowcoder.com/practice/5286dafdcdff4c9a9e92c7dc440143db
#include <cstdio>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @param k int整型
* @return string字符串vector
*/
vector<string> getPermutation(string s, int k) {
// write code here
vector<string> res;
vector<char> data;
if(s.empty())
return res;
for(char c:s){
data.emplace_back(c);
}
sort(data.begin(), data.end());
permutation(data, res, 0);
sort(res.begin(), res.end());
set<string> myset(res.begin(), res.end()); //去除重复值 我也不知道为什么有重复 求大佬解答
vector<string> sub(myset.begin(), myset.end());
vector<string> sub_vector(sub.begin(), sub.begin()+k);
return sub_vector;
}
//递归回溯
void permutation(vector<char> &data, vector<string> &res, int start){
if(start == data.size()-1){
string temp;
for(char c:data){
temp+=c;
}
res.push_back(temp);
}
for(int i=start;i<data.size();i++){
swap(data[start],data[i]);
permutation(data, res, start+1);
swap(data[start],data[i]);
}
}
};


查看40道真题和解析