Seawolf 发表于 2019-7-18 05:24:58

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]
查看完整版本: 763_(划分字母区间)Partition Labels