我觉得可以用双指针ij。大概思路就是逐渐增大ij之间的窗口大小,当大小等于p时就匹配成功了。 每次迭代,j指针指向下一个字符,当下一个字符数量已经超出时,向右移动i至当前字符值的下一个位置。 时间复杂度O(n). 输入: t=CABABBABC p=ABBC 迭代(左右括号代表ij): - []CABABBABC - [C]ABABBABC - [CA]BABBABC - [CAB]ABBABC - CA[BA]BBABC // 此处A的数量已经超出,所以i移动到了第一个A后面 - CA[BAB]BABC - CAB[ABB]ABC// 此处B的数量已经超出,所以i移动到了第一个B后面 - CABA[BBA]BC - CABAB[BAB]C - CABAB[BABC] // ij之间距离==4,return
点赞 评论

相关推荐

牛客网
牛客企业服务