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.

您在真实的面试中是否遇到过这个题?

Yes
样例

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的更多相关文章

  1. Java中关于String的split(String regex, int limit) 方法

    今天在对一个String对象进行拆分的时候,总是无法到达预计的结果.呈现数据的时候出现异常,后来debug之后才发现,错误出在String spilt上,于是开始好好研究下这东西,开始对api里的sp ...

  2. String的split(String regex, int limit)方法小结

    split(String regex, int limit)方法,头一个参数String regex表示字符串分割的模式,包括分隔符和正则表达式:但是第二个参数limit比较迷糊人,api中这样解释: ...

  3. C#String.Split (string[], StringSplitOptions)中的StringSplitOptions是什么意思,看了msdn还是不懂?

    MSDN上面这样子写的: [ComVisibleAttribute(false)] public string[] Split(string[] separator,StringSplitOption ...

  4. 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 ...

  5. C++ Split string into vector<string> by space

    在C++中,我们有时候需要拆分字符串,比如字符串string str = "dog cat cat dog"想以空格区分拆成四个单词,Java中实在太方便了,直接String[] ...

  6. Java字符串的split(String str)方法空串的问题

    String strs[] = "SS1BB2CC3".split("\\D+"); public static String Test(){ Date d = ...

  7. C++ Split string into vector<string> by space(转)

    c++中没有这么方便的实现,但也有很多的方法能实现这个功能,下面列出五种常用的实现的方法,请根据需要选择,个人觉得前三种使用起来比较方便,参见代码如下: #include <vector> ...

  8. T-SQL 拆分使用指定分隔符的字符串(split string)

    比如有一个表,我们需要些一个语句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然后就能返回分割成单独的行. 原表: | So ...

  9. Split string every nth character?

    https://stackoverflow.com/questions/9475241/split-string-every-nth-character >>> line = '12 ...

随机推荐

  1. java内存区域与内存溢出

    JVM的内存区域划分: jvm的内存区域分为5部分:程序计数器,虚拟机栈,本地方法栈,堆跟方法区. 程序计数器,虚拟机栈,本地方法栈三部分是线程私有的,堆跟方法区是公共的. 1.程序计数器 是一块较小 ...

  2. 集合类中modCount字段的作用

    ArrayList.LinkedList.HashMap中都有一个字段叫modCount.这个字段的用途,在ArrayList的父类AbstractList源码中有注释,说的很清楚: /** * Th ...

  3. 定义与声明、头文件与extern总结(转)

    本文转自: http://lpy999.blog.163.com/blog/static/117372061201182051413310/ http://blog.csdn.net/feitianx ...

  4. 定制Linux

    tar -xzvf linux-major-minor-VERSION.tar.gz -C /usr/src cd /usr/src ln -sv linux-major-minor-VERSION ...

  5. SpringBoot 项目打包后获取不到resource下资源的解决

    SpringBoot 项目打包后获取不到resource下资源的解决 在项目中有几个文件需要下载,然后不想暴露真实路径,又没有CDN,便决定使用接口的方式来获取文件.最初的时候使用了传统的方法来获取文 ...

  6. Excel数据导入数据库

    maven依赖 <!--excel相关依赖--> <dependency> <groupId>org.apache.poi</groupId> < ...

  7. mysql常用的优化措施

    http://www.cnblogs.com/ggjucheng/archive/2012/11/07/2758058.html

  8. Hibernate多对多删除问题的解决

    原出处:http://superleo.iteye.com/blog/154587 Hibernate多对多的例子不少,但仔细一看,大多数都是保存的,删除谈的少,但问题还不少,因此有必须简单测试一下, ...

  9. 设置Tomcat的字符编码

    在 server.xml 中的 Connector 标签在加入 URIEncoding="UTF-8" 属性. <Connector port="8080" ...

  10. #include stdio.h(4)

    #include <stdio.h> int main() { //****************1.数组*************** //什么是数组:专门用来存放数据的 /* 格式 ...