class Solution {
public:
int findSubstringInWraproundString(string p) {
}
};
467. 环绕字符串中唯一的子字符串
把字符串 s
看作 "abcdefghijklmnopqrstuvwxyz"
的无限环绕字符串,所以 s
看起来是这样的:
"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...."
。现在给定另一个字符串 p
。返回 s
中 不同 的 p
的 非空子串 的数量 。
示例 1:
输入:p = "a" 输出:1 解释:字符串 s 中只有 p 的一个 "a" 子字符。
示例 2:
输入:p = "cac" 输出:2 解释:字符串 s 中只有 p 的两个子串 ("a", "c") 。
示例 3:
输入:p = "zab" 输出:6 解释:在字符串 s 中有 p 的六个子串 ("z", "a", "b", "za", "ab", "zab") 。
提示:
1 <= p.length <= 105
p
由小写英文字母组成原站题解
python3 解法, 执行用时: 116 ms, 内存消耗: 15 MB, 提交时间: 2022-05-25 11:13:30
class Solution: def findSubstringInWraproundString(self, p: str) -> int: # dp[α] 表示 p 中以字符 α 结尾且在 s 中的子串的最长长度 dp = defaultdict(int) k = 0 for i, ch in enumerate(p): if i > 0 and (ord(ch) - ord(p[i-1])) % 26 == 1: k += 1 else: k = 1 dp[ch] = max(dp[ch], k) return sum(dp.values())