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 ...
随机推荐
- 开发安全的 API 所需要核对的清单
开发安全的 API 所需要核对的清单 以下是当你在设计, 测试以及发布你的 API 的时候所需要核对的重要安全措施. 身份认证 不要使用 Basic Auth 使用标准的认证协议 (如 JWT, OA ...
- Ibatis.net 1.6.2 简单配置及Log4.Net日志记录
看似简单的Ibatis配置起来注意的地方还挺多.里面的设置及功能还算强大.昨晚配置了半宿,结果一运行还是各种错误.急的直冒汗.果断下载实例去研究.英文不好文档只能作为功能参考. 下面一步步进入Ibat ...
- .NET Core 部署到CentOS–3.supervisord守护进
1. 安装 sudo yum install python-setuptoolssudo easy_install supervisor 2. 配置 安装成功后,输入supervisord 会显示配置 ...
- javaSE练习2——流程控制_2.2
一.假设某员工今年的年薪是30000元,年薪的年增长率6%.编写一个Java应用程序计算该员工10年后的年薪,并统计未来10年(从今年算起)总收入. package com.test; public ...
- Python常用模块(二)
一.json与pickle json与pickle模块是为了完成数据的序列化. 序列化是指把对象(变量)从内存中变成可存储或传输的过程,在Python中叫picking,在其他语言中也由其他的叫法,但 ...
- log4j.dtd
<?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Sof ...
- ArcGIS数据存储的方式
工作空间文件夹和地理数据库为存储和管理ArcGIS地理信息提供了主要容器.工作空间文件夹只是磁盘上的普通文件夹,它可保存大量的文件地理数据库.个人地理数据库.基于文件的数据集以及一系列ArcGIS文档 ...
- Java笔记 —— 方法重载和方法重写
Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...
- Spring Boot入门程序
创建第一个Spring Boot的入门程序. 带你一步一步的,搭建第一个Spring Boot 的入门程序,并成功运行,通过实践过程,初步认识和了解如何使用Spring Boot 创建应用程序. 一. ...
- 使用fn_dblog函数查看事务日志和恢复数据
基本语法 SqlServer中有一个未在文档中公开的函数sys.fn_dblog,提供查询当前数据库事务日志的功能.通过这个函数,可以简单了解下数据库事务日志的机制 使用方法如下: select * ...