Python算法题解:NANA回文子串计数
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)
代码解释:
-
count_nana_palindromes(s)函数: - 接受字符串s作为输入。 - 使用even_count和odd_count分别记录偶数和奇数长度的NANA回文子串数量。 - 通过两层循环遍历所有可能的子串,并判断是否为NANA回文子串。 - 返回even_count和odd_count。 -
主程序: - 获取用户输入的字符串。 - 调用
count_nana_palindromes函数计算结果。 - 打印最终结果。
**注意:**代码中已将所有双引号改为单引号。
原文地址: https://www.cveoy.top/t/topic/bbdy 著作权归作者所有。请勿转载和采集!