#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str = "abbaca";
string result;
for (char s : str)
{
if (result.empty()||result.back()!=s)
{
result.push_back(s);
}
else
{
result.pop_back();
}
}
cout << result;
}
#include <iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
void backtracking(int n, int k, int startIndex=1)
{
if (path.size() == k)
{
result.push_back(path);
return;
}
for (int i = startIndex; i <= n; i++)
{
path.push_back(i);
backtracking(n, k, i + 1);
path.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k)
{
backtracking(n, k);
return result;
}
};
#include <iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
int comback = 0;
int into = 0;
void backtracking(int targetSum, int k, int sum, int startIndex=1) {
if (path.size() == k)
{
if (sum == targetSum)
{
result.push_back(path);
}
return;
}
for (int i = startIndex; i <= 9; i++)
{
sum += i;
path.push_back(i);
into++;
cout << "调用递归==" << into << endl;
backtracking(targetSum, k, sum, i + 1);
comback++;
cout << "回溯==" << comback << endl;
sum -= i;
path.pop_back();
}
}
public:
vector<vector<int>> combinationSum3(int targetSum, int k) {
backtracking(targetSum, k, 0);
return result;
}
};
int main()
{
Solution Test;
auto num=Test.combinationSum3(9,3);
for (auto s : num) {
for (auto c : s) { cout << c ; }
cout << endl;
};
}
*
题目链接:https:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
*/
#include <iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
class Solution
{
private:
const string letterMap[10] = {
"",
"",
"abc",
"def",
"ghi",
"jkl",
"mno",
"pqrs",
"tuv",
"wxyz",
};
public:
vector<string> result;
string str;
void backtrack(string &digits,int index=0)
{
if (index==digits.size())
{
result.push_back(str);
return;
}
int num=digits[index] - '0';
string letter = letterMap[num];
for (size_t i = 0; i < letter.size(); i++)
{
str.push_back(letter[i]);
backtrack(digits,index+1);
str.pop_back();
}
}
vector<string> combination(string digits)
{
backtrack(digits);
return result;
}
};
int main()
{
Solution Test;
auto num= Test.combination("23");
for (auto s : num) {
{ cout << s ; }
cout << endl;
};
}
#include <iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
class Solution
{
public:
vector<vector <string>> result;
vector<string> str;
void backtracking(const string &s,int index=0)
{
if (index>=s.size())
{
result.push_back(str);
return;
}
for (int i = index; i < s.size(); i++)
{
if (palindrome(s, index, i))
{
str.push_back(s.substr(index,i-index+1));
}
else
{
continue;
}
backtracking(s, index + 1);
str.pop_back();
}
}
bool palindrome(const string sl,int start,int end)
{
for (int i = start,j=end; i < j; i++,j--)
{
if (sl[i] != sl[j])
{
return false;
}
}
return true;
}
vector<vector<string>> partition(string s)
{
backtracking(s);
return result;
}
};
int main()
{
Solution Test;
auto num = Test.partition("aab");
for (auto s : num) {
for (auto c : s) { cout << c <<ends; }
cout << endl;
};
}
|