字符串分割

题目描述
给定一个由小写字母组成的字符串s,请将其分割成尽量多的子串,
并保证每个字母最多只在其中一个子串中出现。请返回由一个或多个整数表示的分割后各子串的长度。

输入描述:
来自标准输入的一行由小写字母组成的字符串。
输出描述:
字符串最优分割后各子串的长度,多个数字之间由空格分隔。
示例1
输入
ababbacadefgdehijhklij
输出
8 6 8
说明
该样例下最优的分割为"ababbaca" + "defgde" + "hijhklij",在该分割下字母abc仅出现在"ababbaca"中、字母defg仅出现在"defgde"中、字母hijkl仅出现在"hijhklij"中要求将其“分割为尽量多的子串”意味着像"ababbacadefgde" + "hijhklij"这样的分割也是合法的,但在本题中并不是最优解。

解答:
思路:添加一个之前,则进行验证。

res = input()
m = []
for i in res:
    k = 0           #标记
    if m == []:         
        m.append(i)
    else:
        for j in range(len(m)):
            if i in m[j]:
                m = m[:j] +[''.join(m[j:]) + i]   #融合
                k = 1
                break
        if k == 0:
            m.append(i)
print(' '.join([str(len(i)) for i in m]))    #输出每个子串个数

 



 

posted @ 2020-07-27 22:50  Andy_George  阅读(251)  评论(0编辑  收藏  举报