LEETCODE DAY1
今天,练了一个题,题目不难,但是很多人写不出来,有大佬几行写完了,我也写不出来,所以我有必要写篇博客。
题目:1371. 每个元音包含偶数次的最长子字符串
这是我第一次写 leetcode 我不太懂,就吧一些变量放到了类的外面,一直编译不过,难受。后来,我发现了这个问题,但是还是过不了,原因是超时了,ojs 给了一个很长很长长得突破天际得一串字符,然后我那可怜的O(n^2)算法就慢出银河系了。
times = {
'a': 1,
'e': 1,
'i': 1,
'o': 1,
'u': 1
};
yuanyin = "aeiou"
class Solution(object):
def findTheLongestSubstring(self, s):
lenth = len(s)
li = []
for i in range(lenth):
li.append([])
for j in range(lenth):
if s[j] in yuanyin:
times[s[j]] *= -1
for value in times.values():
li[j].append(value)
maxN = 0
N = 0
li.insert(0, [1, 1, 1, 1, 1])
le = len(li)
for k in range(le):
for l in range(le):
if li[k] == li[l]:
N = l - k
if N > maxN:
maxN = N
return maxN
s = input('S: ')
Word = Solution()
num = Word.findTheLongestSubstring(s)
print(num)
因为字符串的每个位置的元音奇偶可能只有32种,朋友告诉我可以用一个表来哈希一下要快的多。我就弄了就
(当然表还是用另一个程序生成的,手写太累了)
class Solution(object):
def findTheLongestSubstring(self, s):
yuanyin = "aeiou"
biao = {
(1, 1, 1, 1, 1) :[-1, -1],
(-1, 1, 1, 1, 1) :[-1, -1],
(1, -1, 1, 1, 1) :[-1, -1],
(-1,