给一个字符串,你可以选择在一个字符或两个相邻字符之后拆分字符串,使字符串由仅一个字符或两个字符组成,输出所有可能的结果
样例:
给一个字符串”123”
返回[[“1”,”2”,”3”],[“12”,”3”],[“1”,”23”]]
#ifndef C680_H
#define C680_H
#include<iostream>
#include<string>
#include<vector>
#include<set>
#include<map>
using namespace std;
class Solution {
public:
/*
* @param : a string to be split
* @return: all possible split string array
*/
vector<vector<string>> splitString(string& s) {
// write your code here
vector<vector<string>> res;
vector<string> v;
if (s.empty())
return res;
else if (s.size() == 0)
return { {} };
createVector(s, 0, v, res);
return res;
}
void createVector(string& s, int pos, vector<string> &v, vector<vector<string>> &res)
{
if (pos >= s.size())
{
res.push_back(v);
return;
}
for (int i = pos; i<pos+2 && i < s.size(); ++i)
{
vector<string> tmp = v;
v.push_back(s.substr(pos, i - pos + 1));
createVector(s, i + 1, v, res);
v = tmp;
}
}
};
#endif