Solution1:我的答案,也是递归,思路类似于9.4求集合的子集
针对字符串的全排列问题,这个思路就挺好的,清晰易懂!
其他解法在LeetCode46:https://blog.youkuaiyun.com/Allenlzcoder/article/details/80271771 和LeetCode47:https://blog.youkuaiyun.com/Allenlzcoder/article/details/80275707 中进行了详细总结。
class Permutation {
public:
vector<string> getPermutation(string A) { //依据题意,有重复的英文字符但不合并
// write code here
vector<string> res;//存放最终结果
if(A.size() == 0)
return res;
else if(A.size() ==1 ) {
res.push_back(A);
return res;
}
string temp_str1(1, A[0]);
res.push_back(temp_str1);
for (int i = 1; i < A.size(); i++) {
string temp_str2(1, A[i]);
int a = res.size();
for (int j = 0; j < a; j++) {
for(int k = 0; k <= res[j].size(); k++) {
if(k == res[j].size())
res.push_back(res[j] + temp_str2);
else
res.push_back(res[j].substr(0, k) + temp_str2 + res[j].substr(k));
}
}
res.erase(res.begin(), res.begin() + a);
}
sort(res.begin(), res.end(), my_compare);
return res;
}
static bool my_compare(string a, string b) {
if(a > b)
return true;
else
return false;
}
};
本文介绍了一种基于递归实现的字符串全排列算法,并通过实例详细解释了其工作原理。此外,还提供了完整的C++代码实现及与其他解法的对比链接。
2253

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



