Split String
来源:互联网 发布:web在线考试系统源码 编辑:程序博客网 时间:2024/06/05 03:10
Split String
Give a string, you can choose to split the string after one character or two adjacent characters, and make the string to be composed of only one character or two characters. Output all possible results.
样例
Given the string "123"
return [["1","2","3"],["12","3"],["1","23"]]
标签
一看这个问题就知道要使用回溯法遍历所有的可能,这也使我盲目的套用课件上的代码模板,直接编程序导致出现了各种小错误。
后来,经过仔细的思考按照回溯法的思路,找到了结束的条件,以及如何恢复现场。对于遍历时判断它是单独一个元素还是两个元素
就按照0,1规划问题的思路,分成两种情况就可以。
class Solution {
public:
/*
* @param : a string to be split
* @return: all possible split string array
*/
vector<vector<string>> a;
vector<string>b;
vector<vector<string>> splitString(string& s) {
// write your code here
if(s=="")
{
a.push_back(b);
return a;
}
backtrack(0,0,s);
if(s.size()>1)
backtrack(1,1,s);
return a;
}
void backtrack(int t,int n,string s)
{
if(t>=s.size())
{
return;
}
else{
if(n==0)
{
string c="";
c=c+s[t];
b.push_back(c);//if(t>=s.size()-1)
a.push_back(b);t++;
backtrack(t,0,s);t++;//这里之所以还需要加1是因为接下来要处理两个字母的情况
backtrack(t,1,s);
t=t-2;
b.erase(b.end()-1);//恢复现场
}
if(n==1)
{
string c="";
c=c+s[t-1]+s[t];
b.push_back(c);//if(t>=s.size()-1)
a.push_back(b);t++;
backtrack(t,0,s);t++;
backtrack(t,1,s);
t=t-2;
b.erase(b.end()-1);//恢复现场
}
}
}
};
public:
/*
* @param : a string to be split
* @return: all possible split string array
*/
vector<vector<string>> a;
vector<string>b;
vector<vector<string>> splitString(string& s) {
// write your code here
if(s=="")
{
a.push_back(b);
return a;
}
backtrack(0,0,s);
if(s.size()>1)
backtrack(1,1,s);
return a;
}
void backtrack(int t,int n,string s)
{
if(t>=s.size())
{
return;
}
else{
if(n==0)
{
string c="";
c=c+s[t];
b.push_back(c);//if(t>=s.size()-1)
a.push_back(b);t++;
backtrack(t,0,s);t++;//这里之所以还需要加1是因为接下来要处理两个字母的情况
backtrack(t,1,s);
t=t-2;
b.erase(b.end()-1);//恢复现场
}
if(n==1)
{
string c="";
c=c+s[t-1]+s[t];
b.push_back(c);//if(t>=s.size()-1)
a.push_back(b);t++;
backtrack(t,0,s);t++;
backtrack(t,1,s);
t=t-2;
b.erase(b.end()-1);//恢复现场
}
}
}
};
阅读全文
0 0
- stringutils.split string.split
- String#split
- String split()
- String.split()
- String.split
- String split()
- String.split()
- String.split
- String split
- String .split
- string.split
- String.split
- String split()
- String.split()
- String.split
- String.split()
- String.split
- Split String
- 能整除1400的数目是__?面试题
- postgresql使用的一些笔记
- Mysql57, 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。 error1045
- 深入浅出设计模式
- 手机网上商城-项目经验总结(七)-导航栏功能
- Split String
- 线性时间选择算法
- freemarker不支持数值类型的获取
- 采用 Visual Studio 编译 Mission Planner 方法与问题总结
- 10.2 香农熵、相对熵(KL散度)与交叉熵
- 手机网上商城-项目经验总结(八)-商品浏览记录
- luoguP3413 SAC#1
- Sourcetree版本回退
- JDK的下载、安装及其环境变量的配置