首先,我们需要判断一个字符串是否合法。我们可以遍历 forbidden 数组中的每个字符串,然后使用字符串的 contains 方法判断 word 是否包含该字符串。如果 word 包含 forbidden 中的任何字符串,那么它就不是合法的。\n\n接下来,我们需要找到 word 的最长合法子字符串的长度。我们可以使用滑动窗口的方法来解决这个问题。我们维护两个指针 start 和 end,表示子字符串的起始和结束位置。初始时,start 和 end 都指向字符串的第一个字符。\n\n我们遍历字符串的每个字符,如果当前字符不在 forbidden 中,那么我们将 end 向右移动一位,并更新最长子字符串的长度。如果当前字符在 forbidden 中,那么我们将 start 移动到当前字符的下一个位置。\n\n具体算法如下:\n\n1. 初始化 start 和 end 为 0,maxLength 为 0。\n2. 遍历字符串 word 的每个字符:\n - 如果当前字符不在 forbidden 中,将 end 向右移动一位,并更新 maxLength。\n - 如果当前字符在 forbidden 中,将 start 移动到当前字符的下一个位置。\n3. 返回 maxLength。\n\n算法的时间复杂度是 O(n*m),其中 n 是字符串 word 的长度,m 是字符串数组 forbidden 的长度。

寻找最长合法子字符串 - 算法详解与优化

原文地址: https://www.cveoy.top/t/topic/pO9o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录