将一个字符串分割成相同字符组成的子串(python实现)

题目:
有这样一个字符串s,将其分割为相同字符组成的子串,例如:
s1 = “aabbccdd” ,结果:[“aa”,“bb”,“cc”,“dd”]
输入:s
输出:分割后的结果列表
方法一:判断相邻的两个字符是否相等,若不相等就添加标志符隔开,然后转换为列表

def func1(s):
    '''
    用来将一个字符串转换成用相同连续字符组成的子串列表
    :param s:
    :return:
    '''
    s1 = list(s)
    k = 0
    for j in range(len(s) - 1):
        if s[j] != s[j + 1]:
            k += 1
            s1.insert(j + k, '#')

    s2 = ''.join(s1).split('#')
    return s2
if __name__ == "__main__":
    s = input()
    result = func1(s)
    print(result)

测试样例:

>>abcd
['a', 'b', 'c', 'd']
>>aabbccddaabbcd
['aa', 'bb', 'cc', 'dd', 'aa', 'bb', 'c', 'd']

方法二:比较相邻字符是否相等,不相等的话就截取相同字符的子串,并添加到列表中

def func2(s):
    '''
    用来将一个字符串转换成用相同连续字符组成的子串列表
    :param s: 
    :return: 
    '''
    reslist = []
    key_word = s[0]
    zi_chuan = ''
    for i in s:
        if i == key_word:
            zi_chuan += i
        else:
            key_word = i
            reslist.append(zi_chuan)
            zi_chuan = i
    reslist.append(zi_chuan)
    return reslist

if __name__ == "__main__":
    s = input()
    result = func2(s)
    print(result)

测试样例:

>>abcd
['a', 'b', 'c', 'd']
>>aabbccddaabbcd
['aa', 'bb', 'cc', 'dd', 'aa', 'bb', 'c', 'd']

版权声明:本文为time_money原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。