Python解决NANA回文子串计数问题

题目描述:

NANA的女朋友送了她一个只包含'a'和'b'的字符串。NANA定义了一种特殊的回文串,称为NANA回文串:将字符串中所有连续相等的字符合并后,如果得到的字符串是回文串,则称原字符串为NANA回文串。

现在需要编写程序,统计给定字符串中长度为偶数和奇数的NANA回文子串的数量。

输入格式:

一行一个字符串,保证字符串的每一个字符只会是'a'或者'b',字符串的长度满足特定条件。

输出格式:

输出一行两个空格隔开的整数,分别表示长为偶数的NANA回文子串的数量和长为奇数的NANA回文子串的数量。

示例:

输入样例1 bb

输出样例1 1 2

输入样例2 bbabbbbbaaabaabbabbabbababbaaba

输出样例2 102 142

**Python代码实现:**pythondef count_nana_palindromes(s): ''' 计算字符串中长为偶数和奇数的NANA回文子串的数量。

Args:      s: 输入字符串

Returns:      一个元组,包含两个整数,分别表示长为偶数和奇数的NANA回文子串的数量。    '''    even_count = 0    odd_count = 0    n = len(s)        # 计算长为偶数的NANA回文子串的数量    for i in range(n-1):        if s[i] == s[i+1]:            even_count += 1            j = 1            while i-j >= 0 and i+1+j < n and s[i-j] == s[i+1+j]:                even_count += 1                j += 1        # 计算长为奇数的NANA回文子串的数量    for i in range(n):        odd_count += 1        j = 1        while i-j >= 0 and i+j < n and s[i-j] == s[i+j]:            odd_count += 1            j += 1        return even_count, odd_count

输入字符串s = input()

调用函数计算NANA回文子串的数量even, odd = count_nana_palindromes(s)

输出结果print(even, odd)

代码解释:

  1. count_nana_palindromes(s)函数: - 接受字符串s作为输入。 - 使用even_countodd_count分别记录偶数和奇数长度的NANA回文子串数量。 - 通过两层循环遍历所有可能的子串,并判断是否为NANA回文子串。 - 返回even_countodd_count

  2. 主程序: - 获取用户输入的字符串。 - 调用count_nana_palindromes函数计算结果。 - 打印最终结果。

**注意:**代码中已将所有双引号改为单引号。

Python算法题解:NANA回文子串计数

原文地址: https://www.cveoy.top/t/topic/bbdy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录