leetCode- 472. Concatenated Words

因为每个组合的字符串,至少要有3个index。 起点,中间拼接点,结点。所以可以将字符串分解为子字符串,判断子字符串是否存在。但是,后面字符串的存在必须要在前面字符串已经存在基础上判断。

class Solution {
public:
vector<string> findAllConcatenatedWordsInADict(vector<string>& words) {
//使用set容器将所有字符串存起了,因为set有count函数可以查找元素是否存在
set<string> s(words.begin(),words.end());
vector<string> res;
for(int i=;i<s.size();i++)
{
string w=words[i];
int n=w.size();
//定义一个数组存标记是否当前位置之前的字符串能找到
int * dp=new int[n+]();
//string的第一个位置之前为空,因此置为1
dp[]=;
for(int j=;j<n;j++)
{
//在当前位置之前的substring都能找到的情况下,才需要考虑后面的string
if(dp[j]==) continue;
for(int k=j+;k<=n;k++)
{
//如果从当前位置到某个位置的字符串能找到,将标记置为1
//k-j<n 不能少,少了可能将字符串自己看为自己的子字符串。
// substr(i,k-j), i 为起始位置,k-j为个数,最大的个数为n,因此k从i+1 到n。
if(k-j<n&&s.count(w.substr(j,k-j))) dp[k]=;
}
if(dp[n])
{
res.push_back(w);
break;
}
}
}
return res;
}
};
substr (startpos, length); startpos是起始字符的符号,length为从 startpos开始取的字符串的长度,包括startpos。
动态数组初始化:
对于内置数据类型元素的数组,必须使用() 来显式初始化,否则程序不执行初始化操作。
int * p= new int[10];//每个元素都没有初始化,p指向的int值是不确定的
int * p=new int[10]();//每个元素初始化为0
类类型初始化,如果显式定义无参的构造函数,则调用都调用无参构造函数:
class A
{
public:
int a;
A()
{
a=;
}
};
A *m =new A();
A *n = new A;
cout<<m->a<<endl;
cout<<n->a<<endl;
都输出1
类类型,如果没有显式定义无参的构造函数,则调用默认构造函数:
class A
{
public:
int a; };
int main()
{
A *m =new A();
A *n = new A;
cout<<m->a<<endl;
cout<<n->a<<endl;
}
输出
0
8132528
因为内部数据类型int 加() 才能初始化。
string *psa = new string[10]; // 每个元素调用默认构造函数初始化
string *psa = new string[10](); // 每个元素调用默认构造函数初始化
输出都为空,因为string 类有无参的构造函数。
声明只是表示一个对象的引用,比如我们的语句:
MyClasee myclass;//这个是在栈上创建一个类对象 程序退出其作用域后自动调用类的析构函数.
这里是一个空引用,而通过new关键字可以实例化一个MyClasee的实例,
所以语句:
myclass = new MyClass();//这个是在堆上创建一个类对象, 必须手动delete释放对象 否则会造成内存泄露的.
他的生存期就是他所处的语句块(也就是离他最近的一对{}),离开了他的生存期他就失效了,一般声明形式就是在栈中定义的。堆上的空间需要你用new申请,用delete或者delete[]归还,在进程的范围内,该内存的生存期就完全由你操作了;
当显式定义了一个构造函数之后,系统设定的default empty construct(默认构造函数)不存在了。尤其是定义了有参数的构造函数之后,必须定义一个无参的构造函数,否则A a; 或者A * a=new A;或A * a=new A() 不能通过编译。

leetCode- 472. Concatenated Words的更多相关文章
- 【LeetCode】472. Concatenated Words 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...
- 【leetcode】472. Concatenated Words
题目如下: Given a list of words (without duplicates), please write a program that returns all concatenat ...
- [LeetCode] Split Concatenated Strings 分割串联字符串
Given a list of strings, you could concatenate these strings together into a loop, where for each st ...
- LeetCode Split Concatenated Strings
原题链接在这里:https://leetcode.com/problems/split-concatenated-strings/description/ 题目: Given a list of st ...
- 472 Concatenated Words 连接的单词
详见:https://leetcode.com/problems/concatenated-words/description/ C++: class Solution { public: vecto ...
- Java实现 LeetCode 472 连接词
472. 连接词 给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat& ...
- 472. Concatenated Words
class Solution { public: vector<string> res; vector<string> findAllConcatenatedWordsInAD ...
- Leetcode 472.连接词
连接词 给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat" ...
- LeetCode All in One 题目讲解汇总(持续更新中...)
终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 477 Total Hamming Distance ...
- LeetCode All in One题解汇总(持续更新中...)
突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间. dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对 ...
随机推荐
- BZOJ3881[Coci2015]Divljak——AC自动机+树状数组+LCA+dfs序+树链的并
题目描述 Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...
- BZOJ3771 Triple(FFT+容斥原理)
思路比较直观.设A(x)=Σxai.先把只选一种的统计进去.然后考虑选两种,这个直接A(x)自己卷起来就好了,要去掉选同一种的情况然后除以2.现在得到了选两种的每种权值的方案数,再把这个卷上A(x). ...
- C# 对象与JSON字符串互相转换的三种方式
C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...
- 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...
- Application Server not specified
IDEA使用tomcat启动web项目,配置页面报错Application Server not specified: 那是因为没有配置tomcat,只要配置一下就好了:
- 构建MySQL-Cluster
Mysql Cluster概述与部署MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件 ...
- NOIp2017D2T2(luogu3959) 宝藏 (状压dp)
时隔多年终于把这道题锅过了 数据范围显然用搜索剪枝状压dp. 可以记还有哪些点没到(或者已到了哪些点).我们最深已到的是哪些点.这些点的深度是多少,然后一层一层地往下推. 但其实是没必要记最深的那一层 ...
- JAVA8给我带了什么——Optional和CompletableFuture
不管是JAVA,还是.NET.我们常常会看到空异常(NullPointerException).这种异常都是在运行的过程中出现.往往是变量是一个null值.但是你引用这个变量的后继字段或是方法.所以我 ...
- 将文件转换为base64字符串,然后还原
package com.um.banks.xinlian.utils; import java.io.File; import java.io.FileInputStream; import java ...
- [noip][2017]
Day1T1 30分思路: 倒着枚举答案z,用扩展欧几里得求解,如果能找到两个非负整数x,y使得ax+by=z则继续枚举,直到无解为止 100分: 最适用与考场上的做法,根据30分思路打表找规律. 3 ...