763_(划分字母区间)Partition Labels
本帖最后由 Seawolf 于 2019-7-18 05:27 编辑763_(划分字母区间)Partition Labels
1 问题描述、输入输出与样例
1.1 问题描述
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。
返回一个表示每个字符串片段的长度的列表。
注意:
S的长度在之间。
S只包含小写字母'a'到'z'。
1.2 输入与输出
输入:
string S:带划分的字符串 S
输出:
vector< int>:划分为尽可能多的片段, 每个字符串片段的长度的列表
1.3 样例
1.3.1 样例1
输入: S = "ababcbacadefegdehijhklij"
输出:
解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。
每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。
S = "ababcbacadefegdehijhklij"
lst = []
memo = []
memo1 = []
for i in S:
lst.append(i)
def get_head(L):
if L == []:
return []
else:
return L
def get_tail(L):
if L ==[]:
return []
else:
return L
def member(X,L):
if L ==[]:
return False
if X == get_head(L):
return True
else:
return member(X,get_tail(L))
def length(L):
if L == []:
return 0
else:
return 1 + length(get_tail(L))
def split(L):
len = length(L)
for i in range(len):
start = 100
end = 0
temp = L
for j in range(len):
if j < start and L == L:
start = j
if member(temp, L):
if j > end:
end = j
memo.append()
def print_all():
for i in range(length(memo)):
small = memo
big = memo
for j in range(length(memo)):
if not (memo< small or memo > big):
if memo < small:
small =memo
elif memo > big:
big = memo
if not in memo1:
memo1.append()
for i in range(length(memo1)):
print(S:memo1])
split(lst)
print_all()
output:
ababcbaca
defegde
hijhklij
页:
[1]