【今晚八点牛课堂第二季最后一期】记得来观看哦~




一、最长公共子序列问题
【题目】
给定两个字符串str1和str2,返回两个字符串的最长公共子序列。
【举例】
str1="1A2C3D4B56",str2="B1D23CA45B6A"。
"123456"或者"12C4B6"都是最长公共子序列,返回哪一个都行。



二、最长公共子串问题
【题目】
给定两个字符串str1和str2,返回两个字符串的最长公共子串。
【举例】
str1="1AB2345CD",str2="12345EF",返回"2345"。
【要求】
如果str1长度为M,str2长度为N,实现时间复杂度为O(MN),额外空间复杂度为O(1)的方法。



三、最小编辑代价
【题目】

给定两个字符串str1和str2,再给定三个整数ic、dc和rc,分别代表插入、删除和替换一个字符的代价,返回将str1编辑成str2的最小代价。

【举例】
str1="abc",str2="adc",ic=5,dc=3,rc=2。
从"abc"编辑成"adc",把'b'替换成'd'是代价最小的,所以返回2。
str1="abc",str2="adc",ic=5,dc=3,rc=100。
从"abc"编辑成"adc",先删除'b',然后插入'd'是代价最小的,所以返回8。
str1="abc",str2="abc",ic=5,dc=3,rc=2。
不用编辑了,本来就是一样的字符串,所以返回0。


四、排成一条线的纸牌博弈问题
【题目】
给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。

【举例】
arr=[1,2,100,4]。
开始时玩家A只能拿走1或4。如果玩家A拿走1,则排列变为[2,100,4],接下来玩家B可以拿走2或4,然后继续轮到玩家A。如果开始时玩家A拿走4,则排列变为[1,2,100],接下来玩家B可以拿走1或100,然后继续轮到玩家A。玩家A作为绝顶聪明的人不会先拿4,因为拿4之后,玩家B将拿走100。所以玩家A会先拿1,让排列变为[2,100,4],接下来玩家B不管怎么选,100都会被玩家A拿走。玩家A会获胜,分数为101。所以返回101。
arr=[1,100,2]。

开始时玩家A不管拿1还是2,玩家B作为绝顶聪明的人,都会把100拿走。玩家B会获胜,分数为100。所以返回100。
#微店#
全部评论
顶一下!
点赞 回复 分享
发布于 2016-11-09 15:27

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务