文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个字符串 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 <= 10^5s 仅由小写英文字母组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-length-3-palindromic-subsequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 对每个字符左右的字符进行计数
  • 遍历中间字符,同时查找左右两侧的26个字符是否都存在
  • 两侧都存在则将字符串编码成26进制数存入哈希set,最后返回哈希个数
class Solution {public:int countPalindromicSubsequence(string s) {vector<int> L(26), R(26);L[s[0]-'a']++;for(int i = 2; i < s.size(); ++i)R[s[i]-'a']++;unordered_set<int> set;for(int i = 1; i < s.size()-1; ++i){for(int j = 0; j < 26; ++j){if(L[j] && R[j])set.insert((s[i]-'a')*26+j);}L[s[i]-'a']++;R[s[i+1]-'a']--;}return set.size();}
};

484 ms 12.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1930. 长度为 3 的不同回文子序列(计数)相关推荐

  1. 【leetcode】【动态规划】最长回文子序列

    [leetcode]最长回文子序列 题目 代码 leetcode题目地址 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些 ...

  2. 算法62---最长回文子序列长度(子串)、回文子序列总共个数(子串)【动态规划】...

    参考链接:https://www.cnblogs.com/AndyJee/p/4465696.html 一.题目:最长回文子序列长度 给定字符串,求它的最长回文子序列长度.回文子序列反转字符顺序后仍然 ...

  3. 动态数组怎么定义_动态规划最长回文子序列

    动态规划|最长回文子序列 今天一起来学习Leetcode第 516 题:最长回文子序列. 题目描述 题目分析 首先回文字符串指的是形如"a","aa",''ab ...

  4. 【代码训练营】day56 | 647. 回文子串 516.最长回文子序列

    所用代码 java 回文子串 LeetCode 647 题目链接:回文子串 LeetCode 647 - 中等 思路 dp[i] [j]:[i, j]子串是否是回文子串,是回文就是true 递推公式: ...

  5. 动态规划练习——最长回文子序列

    题目 力扣原题链接:最长回文子序列 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 ...

  6. LeetCode 2002. 两个回文子序列长度的最大乘积(状态压缩+枚举状态子集+预处理)

    文章目录 1. 题目 2. 解题 2.1 超时 2.2 预处理优化 1. 题目 给你一个字符串 s ,请你找到 s 中两个 不相交回文子序列 ,使得它们长度的 乘积最大 . 两个子序列在原字符串中如果 ...

  7. LeetCode 516. 最长回文子序列(动态规划)

    1. 题目 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "b ...

  8. leetcode - 516. 最长回文子序列

    516. 最长回文子序列 -------------------------------------------- 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 ...

  9. Leetcode 516.最长回文子序列

    Time: 20190906 Type: Medium 题目描述 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" ...

最新文章

  1. redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?
  2. C语言中auto,register,static,const,volatile的区别
  3. Google Maps Android API V2使用及问题解决
  4. rabbitmq python amqp user_python 与rabbitmq
  5. Android 精品资源(一) 2018年3月23日 星期五
  6. CodeForces - 1344D Monopole Magnets(dfs)
  7. Spring5参考指南:Environment
  8. mysql 无法存储joda time的datetime类型
  9. nodejs异步测试_异步过程的自动化测试
  10. linux内核运行关系图,一张图看懂Linux内核运行交互关系
  11. hibernate 链接mysql数据库配置文件,hibernate数据库连接文件(MySql)
  12. 阿里五年晋升三次,选择真的大于努力?
  13. redis info 信息
  14. 电商如何做企业总体架构?
  15. ant design 上传+自定义上传
  16. word制作多级标题目录
  17. ImageMagicK之合成图片
  18. 【英语演讲】Simulation Test 模拟测试
  19. [物理学与PDEs]第4章习题1 反应力学方程组形式的化约 - 动量方程与未燃流体质量平衡方程...
  20. 科研TCO-PEG-Chondroitin sulfate;TCO-PEG-CS;反式环辛烯-聚乙二醇-硫酸软骨素

热门文章

  1. 最近公共祖先 python_求二叉搜索树的最近公共祖先
  2. oracle对查询结果求和_Oracle 闪回技术详解
  3. 2台电脑一根网线传文件_「教程」如何快速的在两台电脑间传输大文件?
  4. 中通知设置响铃_主动切断干扰源——手机“通知”精细化管理
  5. shell 删除了hdfs 文件_从零开始学大数据(三) Shell操作HDFS文件系统-中
  6. 【SSL】HTTPS配置全过程
  7. 【spider】Tesseract机器视觉实现验证码识别
  8. 安装mysql后在安装目录下只有my-default.ini没有my.ini文件 解决-The MySQL server is running with the --secure-file-priv
  9. 机器学习各算法思想(极简版)
  10. 文本分析软件_十大针对机器学习的文本注释工具与服务,你选哪个?