版权声明:本文为博主原创文章,转载请注明出处:http://blog.jerkybible.com/2017/01/10/LeetCode-467-Unique-Substrings-in-Wraparound-String/
题目要求
Consider the string s
to be the infinite wraparound string of “abcdefghijklmnopqrstuvwxyz”, so s
will look like this: “…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd….”.
Now we have another string p
. Your job is to find out how many unique non-empty substrings of p
are present in s
. In particular, your input is the string p
and you need to output the number of different non-empty substrings of p
in the string s
.
Note: p
consists of only lowercase English letters and the size of p might be over 10000.
Example 1:
Input: “a”
Output: 1Explanation: Only the substring “a” of string “a” is in the string s.
Example 2:
Input: “cac”
Output: 2
Explanation: There are two substrings “a”, “c” of string “cac” in the string s.
Example 3:
Input: “zab”
Output: 6
Explanation: There are six substrings “z”, “a”, “b”, “za”, “ab”, “zab” of string “zab” in the string s.
题意解析
计算一个字符串内,有多少字串也是”…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd….”的子串。
解法分析
这道题最直接的方法就是遍历,时间复杂度是O(n2),这个是没有通过的。
看了Discuss之后毛瑟顿开。针对这道题来说,以一个字符作为字符串的结尾,只要知道连续的长度有多少,那么以这个字符结尾的子串就有多少个,这样只需要遍历一遍就可以了。
解题代码
|
|