lincode 680 Split String
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"]]
这道题目刚一开始我想的就是 第一点,可后来发现并不需要。现在感觉能用void就用void,过多的返回值不晕才怪。
1.看到题目给定的函数返回类型是一个嵌套vector,所以很容易的会想到另外设计一个解决函数且返回类型是vector。
2.回溯法的题目必定需要恢复现场,这道题目要考虑的就是怎么恢复现场。
3.考虑嵌套vector什么时候进行插入,考虑插入条件。
4.注意当s.size()==0时怎么操作
下面是没有进行再次优化的代码,有错误或者改进请大佬指出。
class Solution {
public:
/*
* @param : a string to be split
* @return: all possible split string array
*/
vector <string> a;
vector<vector<string> > ans;
void back(int t,int n,string &s)
{
if(!s.size())
{
ans.push_back(a);
return ;
}
if(t>=s.size())
return ;
else{
if(n==1){ //压入一个字符
string c="";
c=c+s[t];
a.push_back(c);
if(t+1==s.size()){
ans.push_back(a);
}
t++;
back(t,1,s);
t++;
back(t,2,s);
t-=2;
a.erase(a.end()-1); //返回现场
}
else{
string c="";
c=c+s[t-1]+s[t];
a.push_back(c);
if(t+1==s.size()){
ans.push_back(a);
}
t++;
back(t,1,s);
t++;
back(t,2,s);
t-=2;
a.erase(a.end()-1);
} }
return ;
}
vector<vector<string> > splitString(string& s) {
// write your code here back(0,1,s); //给定字符为1时
if(s.size()>1)
back(1,2,s); //给定字符数大于1,以两个字符开头搜索
return ans;
}
};
lincode 680 Split String的更多相关文章
- Java中关于String的split(String regex, int limit) 方法
今天在对一个String对象进行拆分的时候,总是无法到达预计的结果.呈现数据的时候出现异常,后来debug之后才发现,错误出在String spilt上,于是开始好好研究下这东西,开始对api里的sp ...
- String的split(String regex, int limit)方法小结
split(String regex, int limit)方法,头一个参数String regex表示字符串分割的模式,包括分隔符和正则表达式:但是第二个参数limit比较迷糊人,api中这样解释: ...
- C#String.Split (string[], StringSplitOptions)中的StringSplitOptions是什么意思,看了msdn还是不懂?
MSDN上面这样子写的: [ComVisibleAttribute(false)] public string[] Split(string[] separator,StringSplitOption ...
- Weekly Contest 78-------->811. Subdomain Visit Count (split string with space and hash map)
A website domain like "discuss.leetcode.com" consists of various subdomains. At the top le ...
- C++ Split string into vector<string> by space
在C++中,我们有时候需要拆分字符串,比如字符串string str = "dog cat cat dog"想以空格区分拆成四个单词,Java中实在太方便了,直接String[] ...
- Java字符串的split(String str)方法空串的问题
String strs[] = "SS1BB2CC3".split("\\D+"); public static String Test(){ Date d = ...
- C++ Split string into vector<string> by space(转)
c++中没有这么方便的实现,但也有很多的方法能实现这个功能,下面列出五种常用的实现的方法,请根据需要选择,个人觉得前三种使用起来比较方便,参见代码如下: #include <vector> ...
- T-SQL 拆分使用指定分隔符的字符串(split string)
比如有一个表,我们需要些一个语句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然后就能返回分割成单独的行. 原表: | So ...
- Split string every nth character?
https://stackoverflow.com/questions/9475241/split-string-every-nth-character >>> line = '12 ...
随机推荐
- 使用python将元组转换成列表,并替换其中元素
aa = (1, 2, 3, 4, 5, 6) b = [(x == 5 and 8 or x) for x in aa] z = map(lambda x: 8 if x == 5 else x, ...
- 查看SQL Server中的锁表及解锁
有时候系统很慢,有可能是SQL Server数据库中某些表被锁定 --查看被锁表(需查多几次,有些临时锁很快会自动解锁): SELECT request_session_id AS spid, OBJ ...
- JS条件语句优化
1.对多个条件使用Array.includes eg: function test(fruit){ ...
- Mysql慢查询 [第一篇]
一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态slow_q ...
- [bootstrap]模态框总结
<!--data-backdrop禁止点击空白处关闭模态框,也可以js设置,其他参数可参考官网模态框文档--> <div class="modal fade" i ...
- selenium并行的使用
Selenium Grid Parallel Test(C#) Author: Mars (hnynes)Email: hnynes@gmail.comMSN: hnynes@gmail.co ...
- Centos 6/RHEL disable the IPv6 module.
http://minimallinux.blogspot.com/2013/07/centos-6rhel-disable-ipv6-module.html IPv6 was introduced t ...
- 爬虫技术框架——Heritrix
Heritrix是一个由Java开发的开源Web爬虫系统,用来获取完整的.精确的站点内容的深度复制, 具有强大的可扩展性,运行开发者任意选择或扩展各个组件,实现特定的抓取逻辑. 一.Heritrix介 ...
- 翻译-ExcelDNA开发文档-首页
转载自个人主页 前言 ExcelDNA是一名国际友人开发的开源框架,文档全是英文文档,当时看的时候非常吃力,现在将英文文档翻译过来,为的是让自己加深印象以及自己以后看的时候能不用这么吃力. 介绍 Ex ...
- May 04th 2017 Week 18th Thursday
No matter how far you may fly, never forget where you come from. 无论你能飞多远,都别忘了你来自何方. I never forget w ...