zoukankan      html  css  js  c++  java
  • 面试题-python3 找出一个字符串中所有子串是回文的次数

    前言

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

    题目

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

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

    # 作者-上海悠悠 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 "")
    

    运行结果

    ['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']
    

    判断是否是回文

    a = "awkkwa"
    print(a == a[::-1])
    

    整合到一起

    # 作者-上海悠悠 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

  • 相关阅读:
    puppeteer 离线安装chromium
    如何在Taro项目中使用Iconfont(阿里图标)
    POI3.8内存中限制行数为100问题记录
    centos下puppeteer调用chromium报错,缺少包
    VS Code 简单配置运行Java
    使用VSCode 断点调试 js项目,html页面
    Java--Excel--poi 边框、单元格换行、 背景色、合并单元格相关
    浅析Spring Aware
    Spring MVC 注解
    异常处理
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14604699.html
Copyright © 2011-2022 走看看