第一题 551. Student Attendance Record I
题目描述
给定一个字符串s,若其中的’A’大于1个,或者出现连续的3个或3个以上’L’,返回False,否则返回True
算法
|
|
第二题 552. Student Attendance Record II
题目描述
字符串由’A’, ‘L’, ‘P’三种字符构成,若其中包含的’A’不超过1个,并且不包含连续的3个或3个以上’L’,则称该字符串有效。
给定正整数n,返回长度为n的“有效字符串”的个数。
由于结果可能会很大,对1e9 + 7取模。
注意:n的值不超过100,000
算法
详情见链接
非常好的一道题目
|
|
第三题 583. Delete Operation for Two Strings
题目描述
给定单词word1和word2,从word1和/或word2中删去一些字符,使得word1和word2相同,求最少删除的字符数。
注意:
单词长度不超过500
单词只包含小写字母
算法
利用动态规划的原理求最长的公共序列
求最长的公共SubSequence
对于word1,我们现在处于i位置。
对于word2,我们处于j位置。
dp[i][j]表示word1长度为0~i,word2长度为0~j的String,他们的最大公共长度。
如果 char(i) == char(j),那么他们的最大公共长度为dp[i-1][j-1],即他们上一个的最大公共长度加1。
如果char(i) != char(j), 那么长度为Max(dp[i-1][j], dp[i][j-1])即之前的对于0~i-1,0~j或0~i,0~j-1的最大的子集
由此可以写出循环,解决此问题
|
|
求最短的能使两个Array相同的路径
|
|
第四题 72. Edit Distance
题目描述
有两个String, 现在我们有replace, insert, delete 三种方法。求让两个String相同的最短操作数
算法
与上一题相似,都是求让两个String一步步相同,然后再查看最小的情况
二维矩阵
|
|
一维矩阵
|
|
第五题 161. One Edit Distance
题目描述
检查两个String是否可以通过一次修改就可以得到
算法
只有三种情况
* 1) Replace 1 char:
s: a B c
t: a D c
* 2) Delete 1 char from s:
s: a D b c
t: a b c
* 3) Delete 1 char from t
s: a b c
t: a D b c
Insert可以看做delete的一种形式
|
|
第六题 28. Implement strStr()
题目描述
找寻在String1 里,是否存在String2,并返回第一个String2的标号
算法
|
|
第七题 459. Repeated Substring Pattern
题目描述
给定一个非空字符串,判断它是否可以通过自身的子串重复若干次构成。你可以假设字符串只包含小写英文字母,并且长度不会超过10000
算法
如果能够复制,首先必须满足重复的要求,必须有重复的字母出现,找到首次出现的重复字母。对整个String进行查找
|
|
第八题 536. Construct Binary Tree from String
题目描述
根据字符串重构二叉树。
输入包含数字和括号,数字代表根节点,括号内的子串代表左、右孩子。
注意:
输入字符串只包含’(‘, ‘),’-‘和数字’0’-‘9’
算法
利用回溯,将String进行切割,并返回答案
|
|