面试题请教

两个面试里遇到的算法题,求各位大佬指点一下思路

1.给定一个字符串,找到包含各字母数量相同的最长子串长度,如abcdbdchi, 对于子串bcdbdc;中,包含的各字母(b,c,d)的数量相同,均为2,因此该子串是一个合法子串。要求O(N)复杂度解决;

2.给了一个一维的数组。总共有5种不同的elements,代表5种颜色:R,B,W,G,Y. 如果有至少四个同种颜色的candy是连续的,就全部消除掉。然后数组的左右两部分再连接起来.你手上有有限个数的candy。你可以把手上的candy 插入数组使得数组里的candy 消除掉。问你最少使用手上的几个 candy 能够消除所有candy。如果不能return -1.
Example:
input: RRBBBRR
candy in your hand: BYG. return 1. 你只需要手上的B candy,插入中间位置。4个B就消除掉了。然后剩下的RRRR也消除掉了。

感谢各位大佬指点 #面试#
全部评论
第一题 lc 395,第二题用stack存储一个数组,第一个下标是类型,第二个下标是当前连续的个数,遍历数组,如果类型相同,下标++,直到遇到第一个不相同的,这个时候判断一下能不能消除(%4,然后+手里面的),如果可以全消除,判断一下下一个元素跟栈顶元素是不是相等,相等的话从栈顶元素下标开始,不相等的话继续重复上一步流程,如果最后栈不为空,如果栈顶元素+当前手里面的个数可以消除就往下走,走到不能消除就是不行?
点赞 回复 分享
发布于 2024-03-13 13:58 四川

相关推荐

allin秋招的大菠萝很爱交友:后续,已拿offer ~查看图片
点赞 评论 收藏
分享
谁知道呢_:你好,我是炮灰n+1号
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务