首页 > 其他分享 >数学题-长度为5的不同回文子序列

数学题-长度为5的不同回文子序列

时间:2022-11-27 12:00:48浏览次数:33  
标签:示例 字符串 bbcbaba 长度 序列 数学题 回文

1930. 长度为 3 的不同回文子序列

问题描述

给你一个字符串 s ,返回 s 中 长度为 3 的不同回文子序列 的个数。

即便存在多种方法来构建相同的子序列,但相同的子序列只计数一次。

回文 是正着读和反着读一样的字符串。

子序列 是由原字符串删除其中部分字符(也可以不删除)且不改变剩余字符之间相对顺序形成的一个新字符串。

例如,"ace" 是 "abcde" 的一个子序列。

示例 1:

输入:s = "aabca"
输出:3
解释:长度为 3 的 3 个回文子序列分别是:

  • "aba" ("aabca" 的子序列)
  • "aaa" ("aabca" 的子序列)
  • "aca" ("aabca" 的子序列)
    示例 2:

输入:s = "adc"
输出:0
解释:"adc" 不存在长度为 3 的回文子序列。
示例 3:

输入:s = "bbcbaba"
输出:4
解释:长度为 3 的 4 个回文子序列分别是:

  • "bbb" ("bbcbaba" 的子序列)
  • "bcb" ("bbcbaba" 的子序列)
  • "bab" ("bbcbaba" 的子序列)
  • "aba" ("bbcbaba" 的子序列)

提示:

3 <= s.length <= 105
s 仅由小写英文字母组成

问题求解

提前记录一下数字即可。

class Solution:
    def countPalindromicSubsequence(self, s: str) -> int:
        n = len(s)
        res = 0
        freq = Counter(s)
        record = defaultdict(int)
        used = set()

        for i in range(n):
            for c in freq.keys():
                l = record[c]
                r = freq[c] - record[c] if c != s[i] else freq[c] - record[c] - 1
                if l and r and s[i] + c not in used: 
                    used.add(s[i] + c)
                    res += 1
            record[s[i]] += 1
        
        return res

6251. 统计回文子序列数目

问题描述

给你数字字符串 s ,请你返回 s 中长度为 5 的 回文子序列 数目。由于答案可能很大,请你将答案对 109 + 7 取余 后返回。

提示:

如果一个字符串从前往后和从后往前读相同,那么它是 回文字符串 。
子序列是一个字符串中删除若干个字符后,不改变字符顺序,剩余字符构成的字符串。

示例 1:

输入:s = "103301"
输出:2
解释:
总共有 6 长度为 5 的子序列:"10330" ,"10331" ,"10301" ,"10301" ,"13301" ,"03301" 。
它们中有两个(都是 "10301")是回文的。
示例 2:

输入:s = "0000000"
输出:21
解释:所有 21 个长度为 5 的子序列都是 "00000" ,都是回文的。
示例 3:

输入:s = "9999900000"
输出:2
解释:仅有的两个回文子序列是 "99999" 和 "00000" 。

提示:

1 <= s.length <= 104
s 只包含数字字符。

问题求解

需要特别注意的是由于字符集的有限性,因此可以将两两配对的所有个数存储下来。

标签:示例,字符串,bbcbaba,长度,序列,数学题,回文
From: https://www.cnblogs.com/hyserendipity/p/16929401.html

相关文章

  • 2180. 最长递增子序列问题
    题目链接2180.最长递增子序列问题给定正整数序列\(x_1,\cdots,x_n\)。计算其最长递增子序列的长度\(s\)。计算从给定的序列中最多可取出多少个长度为\(s\)的......
  • 回文串判断
    1、直接上代码publicstaticbooleanisPalindrome(Strings){//1、判断字符串是否是null或者是空字符,如果是就返回trueif(s==null&&"".equals......
  • ORA-00742: 日志读取在线程 %d 序列 %d 块 %d 中检测到写入丢失情况----惜分飞
    标题:ORA-00742:日志读取在线程%d序列%d块%d中检测到写入丢失情况作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]由于......
  • Newtonsoft.Json null值不序列化
    varjSetting=newJsonSerializerSettings{NullValueHandling=NullValueHandling.Ignore};varjson=JsonConvert.SerializeObject(response,Formatting.Indented,j......
  • 最长回文串
    最长回文串一、题目描述给定一个包含大写字母和小写的字符串s,返回通过这些字母构成的最长的回文串。在构造过程中,请注意区分大小写。示例1输入:s="abccccdd"输出:7......
  • mysql jdbc反序列化利用
    参考资料https://www.anquanke.com/post/id/203086按照资料描述搭建环境,注意,如果使用8.0.28版本的mysql,服务端MySQL_Fake_Server会报错(ValueError('45isnotavalidCha......
  • Java 序列化工具
    一、Java自带的序列化Java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据......
  • 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分
    全文下载链接:http://tecdat.cn/?p=23544 在本文中,长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络,能够学习长期依赖关系。最近我们被客户要求撰写......
  • Android 序列化框架 Gson 原理分析,可以优化吗?
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。前言大家好,我是小彭。Gson是Google推出的JavaJson解析库,具有接入成本低、使用便捷、功......
  • LeetCode 300.最长递增子序列(中等)
    题目描述给你一个整数数组​​nums​​,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,​​[3......