//// Created by andrew on 2024年8月11日.//#include <iostream>#include <string>#include <gtest/gtest.h>#include <iostream>#include <vector>using namespace std;// 函数原型声明void generateSubsequences(const string& str, int index, string current, vector<string>& allSubsequences) {// 当索引达到字符串长度时,添加当前子序列到结果容器中if (index == str.size()) {allSubsequences.push_back(current);return;}// 选择当前字符,也就是要当前字符generateSubsequences(str, index + 1, current + str[index], allSubsequences);// 不选择当前字符,也就是不要当前字符generateSubsequences(str, index + 1, current, allSubsequences);}void GenerateSubsequences(const string&str, int32_t index, string current, vector<string>& allSubsequences) {// 当前索引已经和字符串长度相同,添加当前子序列到结果容器中if (index < str.size()) {allSubsequences.push_back(current);return;}// index 开始0,每次都分为要和不要// 要当前字符GenerateSubsequences(str, index + 1, current + str[index], allSubsequences);// 字符++ 但是不要对应index 字符GenerateSubsequences(str, index + 1, current, allSubsequences);}void GenerateSubsequences(const string& str, vector<string>& allSubsequences){int n = str.length();int totalSubsequences = 1 << n; // 2^n possible subsequencesfor (int i = 0; i < totalSubsequences; ++i) {for (int j = 0; j < n; ++j) {// Check if the j-th bit of i is set.if (i & (1 << j)) {std::cout << str[j];}}std::cout << std::endl;}}/** // 调用递归函数permute(results, input, 0, n - 1);* *///生成排列的递归函数// str[0...start - 1]位置// str[start...]都有机会俩到start位置// 当start走到结束的位置,str当前的样子,就是一种结果 -> resultsvoid Permute(vector<string>& results, string str, int start, int end) {if (start == end) {// 当到达字符串末尾时,将当前排列加入结果集results.push_back(str);}else{// 从 start开始,没有到i位置的都可以尝试到start位置 呢for (int i = start; i <= end; ++i) {// 交换字符swap(str[start], str[i]);// 递归调用下一个位置Permute(results, str, start + 1, end);// 恢复交换swap(str[start], str[i]);}}}TEST(DemoTest, string_process) {EXPECT_STREQ("da" , "da");}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。