面试题-python3 找出一个字符串中所有子串是回文的次数

2021-04-12 17:11:06 浏览数 (2)

前言

回文是指正序(从左向右)和倒序(从右向左)读都是一样的。例如:121 ,abcdedcba,123321等都是回文

题目

这种的字符串“ABCABADCSABBAUYIIYU”找出回文出现的次数 子串回文是:’BB’, ‘II’,’ABA’,’ABBA’, ‘YIIY’,’UYIIYU’ 总共有6个

先找出所有的子串,子串长度大于等于2个子串

代码语言:javascript复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

a = "ABCABADCSABBAUYIIYU"
# 回文数大于2个字符
for i in range(2, len(a) 1):
    b = []
    for j in range(len(a)-i 1):
        # 生成的组合
        new_s = a[j:j i]
        b.append(new_s)
    print(b if len(b) > 0 else "")

运行结果

代码语言:javascript复制
['AB', 'BC', 'CA', 'AB', 'BA', 'AD', 'DC', 'CS', 'SA', 'AB', 'BB', 'BA', 'AU', 'UY', 'YI', 'II', 'IY', 'YU']
['ABC', 'BCA', 'CAB', 'ABA', 'BAD', 'ADC', 'DCS', 'CSA', 'SAB', 'ABB', 'BBA', 'BAU', 'AUY', 'UYI', 'YII', 'IIY', 'IYU']
['ABCA', 'BCAB', 'CABA', 'ABAD', 'BADC', 'ADCS', 'DCSA', 'CSAB', 'SABB', 'ABBA', 'BBAU', 'BAUY', 'AUYI', 'UYII', 'YIIY', 'IIYU']
['ABCAB', 'BCABA', 'CABAD', 'ABADC', 'BADCS', 'ADCSA', 'DCSAB', 'CSABB', 'SABBA', 'ABBAU', 'BBAUY', 'BAUYI', 'AUYII', 'UYIIY', 'YIIYU']
['ABCABA', 'BCABAD', 'CABADC', 'ABADCS', 'BADCSA', 'ADCSAB', 'DCSABB', 'CSABBA', 'SABBAU', 'ABBAUY', 'BBAUYI', 'BAUYII', 'AUYIIY', 'UYIIYU']
['ABCABAD', 'BCABADC', 'CABADCS', 'ABADCSA', 'BADCSAB', 'ADCSABB', 'DCSABBA', 'CSABBAU', 'SABBAUY', 'ABBAUYI', 'BBAUYII', 'BAUYIIY', 'AUYIIYU']
['ABCABADC', 'BCABADCS', 'CABADCSA', 'ABADCSAB', 'BADCSABB', 'ADCSABBA', 'DCSABBAU', 'CSABBAUY', 'SABBAUYI', 'ABBAUYII', 'BBAUYIIY', 'BAUYIIYU']
['ABCABADCS', 'BCABADCSA', 'CABADCSAB', 'ABADCSABB', 'BADCSABBA', 'ADCSABBAU', 'DCSABBAUY', 'CSABBAUYI', 'SABBAUYII', 'ABBAUYIIY', 'BBAUYIIYU']
['ABCABADCSA', 'BCABADCSAB', 'CABADCSABB', 'ABADCSABBA', 'BADCSABBAU', 'ADCSABBAUY', 'DCSABBAUYI', 'CSABBAUYII', 'SABBAUYIIY', 'ABBAUYIIYU']
['ABCABADCSAB', 'BCABADCSABB', 'CABADCSABBA', 'ABADCSABBAU', 'BADCSABBAUY', 'ADCSABBAUYI', 'DCSABBAUYII', 'CSABBAUYIIY', 'SABBAUYIIYU']
['ABCABADCSABB', 'BCABADCSABBA', 'CABADCSABBAU', 'ABADCSABBAUY', 'BADCSABBAUYI', 'ADCSABBAUYII', 'DCSABBAUYIIY', 'CSABBAUYIIYU']
['ABCABADCSABBA', 'BCABADCSABBAU', 'CABADCSABBAUY', 'ABADCSABBAUYI', 'BADCSABBAUYII', 'ADCSABBAUYIIY', 'DCSABBAUYIIYU']
['ABCABADCSABBAU', 'BCABADCSABBAUY', 'CABADCSABBAUYI', 'ABADCSABBAUYII', 'BADCSABBAUYIIY', 'ADCSABBAUYIIYU']
['ABCABADCSABBAUY', 'BCABADCSABBAUYI', 'CABADCSABBAUYII', 'ABADCSABBAUYIIY', 'BADCSABBAUYIIYU']
['ABCABADCSABBAUYI', 'BCABADCSABBAUYII', 'CABADCSABBAUYIIY', 'ABADCSABBAUYIIYU']
['ABCABADCSABBAUYII', 'BCABADCSABBAUYIIY', 'CABADCSABBAUYIIYU']
['ABCABADCSABBAUYIIY', 'BCABADCSABBAUYIIYU']
['ABCABADCSABBAUYIIYU']

判断是否是回文

代码语言:javascript复制
a = "awkkwa"
print(a == a[::-1])

整合到一起

代码语言:javascript复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

a = "ABCABADCSABBAUYIIYU"
s = 0
# 回文数大于2个字符
for i in range(2, len(a) 1):
    b = []
    for j in range(len(a)-i 1):
        # 生成的组合
        new_s = a[j:j i]
        if new_s == new_s[::-1]:
            b.append(new_s)
    # print(b)
    s  = len(b)
print("总共子串回文:", s)

运行结果: 总共子串回文:6

0 人点赞